कैसे मैं एक लैम्ब्डा अभिव्यक्ति में एक बाहरी चर का उपयोग कर सकते हैं

वोट
1

मैं एक का उपयोग करने के कोशिश कर रहा हूँ लैम्ब्डा एक foreach पाश में अभिव्यक्ति एक चर i एक स्ट्रिंग है प्रत्येक वस्तु के लिए मूल्यांकन किया जाता है करने के लिए जोड़ सकते हैं।

यहाँ कोड है

private String getStringActiveRooms(@NotNull ArrayList<Chat_room> c){
    String i;
    c.forEach( (chat_room) -> i = i.concat(chat_room.getName() + [ + chat_room.activeUsers() + / + chat_room.maxUsers() + ] + , ));

    return i;

}

यह मुझे एक त्रुटि फेंकता है क्योंकि बाहरी चर होना चाहिए अंतिम एक लैम्ब्डा अभिव्यक्ति में प्रयोग की जाने वाली।
लेकिन अगर मैं अंतिम बनाने के चर मैं नहीं कर सकता बदलने यह और कोड काम नहीं किया।

क्या किसी के पास एक समाधान है?

13/01/2020 को 23:49
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
2

आप उपयोग कर सकते हैं StringBuffer

private String getStringActiveRooms(@NotNull ArrayList<Chat_room> c){
    final StringBuffer i = new StringBuffer();
    c.forEach( (chat_room) -> i.append(chat_room.getName() + "[" + chat_room.activeUsers() + "/" + chat_room.maxUsers() + "]" + ", "));

    return i.toString();

}

इसके अलावा आप को पता है कि का उपयोग कर StringBufferदेखने के एक प्रदर्शन बिंदु से बेहतर है: स्ट्रिंग अपरिवर्तनीय हैं इसका मतलब है कि अगर आप एक स्ट्रिंग है iकि हर यात्रा i + "something"एक अस्थायी चर के लिए ढेर अंतरिक्ष आवंटन स्मृति में एक नया स्ट्रिंग वस्तु बनाता है

13/01/2020 को 23:53
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more