Java - 添加到Lambda表达式

时间:2016-03-09 12:49:15

标签: java foreach lambda

我对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;
}

2 个答案:

答案 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();
}