我创建了简单的演示:
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);
}
Run Code Online (Sandbox Code Playgroud)
问题是BiConsumer combiner部分collect根本没有运行.
如果我使用parallelStream()两个参数res1并且res2等于供应商,它就会运行String::new.
如何combiner在collect方法中工作?