Bir lambda ifadede harici değişken nasıl kullanabilirim

oy
1

Ben kullanmaya çalışıyorum lambda her bir nesne için değerlendirilen bir değişken i bir dizeye bitiştirmek için forEach döngüde ifadeyi.

Burada kodudur

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;

}

Dış değişkenler olmalı çünkü bana bir hata atar nihai bir lambda ifadesi kullanılacak.
Ben nihai hale Ama eğer değişken ı can not değiştirmek onu ve kod işe yaramadı.

Herkes bir çözüm var mı?

Oluştur 13/01/2020 saat 23:49
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
2

Kullanabilirsiniz 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();

}

Ayrıca kullandığınız olduğunu bilmek zorunda StringBuffergörünümünde bir performans açısından daha iyidir: değişmez dize vardır bir dize varsa bu araçlar iher tekrarında i + "something"geçici değişken için yığın alanı tahsis bellekte yeni bir String nesnesi yaratır

Cevap 13/01/2020 saat 23:53
kaynak kullanıcı

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