При использовании String :: new в качестве метода поставщика для сбора, я увидел, что выходные данные не собираются и ничего не возвращаются в конце.
Если используется StringBuilder, то работает нормально.
Почему String :: new не может собирать?
List<String> list2 = Arrays.asList("a", "b", "c", "d", "e", "f", "g");
String collect = list2.stream().collect(String::new, (res, elem) -> {
res = res.concat(elem);
System.out.printf("res=%s, elem=%s\n", res, elem);
}, (res1, res2) -> {
System.out.printf("res1=%s, res2=%s\n", res1, res2);
});
System.out.println("collect=" + collect);
Вывод:
res=a, elem=a
res=b, elem=b
res=c, elem=c
res=d, elem=d
res=e, elem=e
res=f, elem=f
res=g, elem=g
collect=