【发布时间】:2020-01-13 20:49:02
【问题描述】:
我正在尝试在 forEach 循环中使用 lambda 表达式将针对每个对象评估的字符串连接到变量“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;
}
这会引发错误,因为外部变量必须是 final 才能在 lambda 表达式中使用。
但是,如果我将变量设为 final,我将无法更改它并且代码不起作用。
有人有解决办法吗?
【问题讨论】:
-
使其成为类的字段
-
为什么不映射
c中的每个对象并创建一个新的arraylist,然后将所有值连接在一起? Related SO question -
做these questions answer your question?在问这个问题之前你做了什么搜索?
-
Streams 非常适合这个。