Hvordan kan jeg benytte en ytre variabel i en lambda uttrykk

stemmer
1

Jeg prøver å bruke et lambda uttrykk i en foreach sløyfe for å sette sammen til en variabel i en streng som blir evaluert for hvert objekt.

her er koden

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;

}

Det kaster meg en feil fordi eksterne variabler må være endelig å bli brukt i en lambda uttrykk.
Men hvis jeg gjør siste variabelen jeg kan ikke endre det og koden fungerte ikke.

Har noen en løsning?

Publisert på 13/01/2020 klokken 23:49
kilden bruker
På andre språk...                            


1 svar

stemmer
2

Du kan bruke 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();

}

I tillegg må du vite at bruk StringBufferer bedre fra en forestilling synspunkt: String er uforanderlige Dette betyr at hvis du har en streng ihver iterasjon i + "something"skaper en ny String objekt i haugen plass tildele minne for en midlertidig variabel

Svarte 13/01/2020 kl. 23:53
kilden bruker

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