Я создал простую демонстрацию:
public static void main(String[] args) {
List<String> list2 = Arrays.asList("adf", "bcd", "abc", "hgr", "jyt", "edr", "biu");
String collect = list2.stream().collect(String::new, (res, elem) -> {
res=res.concat(" ").concat(elem);
// System.out.printf("res=%s, elem=%s\n", res.isEmpty(), elem);
}, (res1, res2) -> {
System.out.printf("res1=%s, res2=%s\n", res1, res2);
});
System.out.println("collect=" + collect);
}
Проблема состоит в том, что BiConsumer combiner
часть collect
не запускается вообще.
Выполняется, если я использую parallelStream()
, но два аргумента res1
и res2
равны поставщику String::new
.
Как сделать combiner
работать в методе collect
?