我对Java很陌生,我尝试在StackOverflow / Google上查看,但无法找到问题的答案。
问题:我有一个名为's'的字符串,我已将其设置为句子。 然后,我想使用Lambda .forEach循环迭代一个对象列表,从对象中检索toString()并将其添加到这个'String'。
这是我的代码:
public String toString() {
String s = "In klas " + this.klasCode + " zitten de volgende leerlingen:\n";
deLeerlingen.forEach(leerlingen -> {
s += leerlingen.toString();
});
return s;
}
答案 0 :(得分:4)
public String toString() {
String s = "In klas " + this.klasCode + " zitten de volgende leerlingen:\n";
String list = deLeerlingen.stream()
.map(Object::toString)
.collect(Collectors.joining());
return s + list;
}
答案 1 :(得分:3)
直接使用String
变量是不可能的,因为lambda外部变量必须是(effectively) final。
您可以改为使用StringBuilder
:
public String toString() {
StringBuilder b = new StringBuilder();
b.append("In klas ");
b.append(this.klasCode);
b.append(" zitten de volgende leerlingen:\n");
deLeerlingen.forEach(leerlingen -> {
b.append(leerlingen.toString());
});
return b.toString();
}