collect()
Stream 的方法是一个可变的归约。基于 Java 文档:
可变归约操作在处理流中的元素时将输入元素累积到可变结果容器中,例如 Collection 或 StringBuilder。
我尝试了以下方法,它编译没有问题。
Stream<String> stream1 = Stream.of("w", "o", "l", "f");
String word = stream1.collect(String::new, String::concat, String::concat);
System.out.println(word);
如果供应商是 StringBuffer,我将收集操作视为元素将附加到提供的 StringBuffer。
既然 String 是一个不可变对象,可变归约在这里如何工作?每次执行累加器时都会创建一个新对象的reduce操作是否相同?