Hogyan tudom használni egy külső változóban lambda kifejezés

szavazat
1

Próbálom használni a lambda kifejezést egy foreach ciklus összefűzésére egy „i” változó egy string, hogy értékeljük az egyes objektumokra.

itt a kód

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;

}

Úgy dob nekem egy hiba, mert a külső változókat kell végső kell használni egy lambda kifejezés.
De ha én meg a végső változó nem tudok változtatni , és a kód nem működik.

Van valakinek egy megoldás?

A kérdést 13/01/2020 23:49
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
2

Te tudod használni 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();

}

Ezen kívül meg kell tudni, hogy a StringBufferjobb egy teljesítmény szempontjából: string megváltoztathatatlanok ez azt jelenti, hogy ha van egy karakterlánc iminden iteráció i + "something"létrehoz egy új String objektum a halom helyet memórialefoglalás egy átmeneti változó

Válaszolt 13/01/2020 23:53
a forrás felhasználó

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