以下是使用
的示例 汇总功能(filter
/ map
/ sorted
),
&安培;
行为(this::capitalize
),
&安培;
终端操作(forEach
),
使用给定的流(Stream.of(...)
),
Stream
.of("horatio", "laertes", "Hamlet", ...)
.filter(s -> toLowerCase (s.charAt(0)) == 'h') # aggregate_function(behavior)
.map(this::capitalize)
.sorted()
.forEach(System.out::println);
为了不在并行流中引发竞争条件,我了解到,我们需要额外的努力来明确地使行为在没有副作用(无状态)的情况下工作,如下所示,
String capitalize(String s) {
if (s.length() == 0)
return s;
return s.substring(0, 1)
.toUpperCase()
+ s.substring(1)
.toLowerCase();
aggregate_function 只对从流生成的每个元素应用行为。
作为从流生成的元素(一次一个),没有非瞬态存储,
没有任何额外的努力,聚合函数总是纯函数,没有任何副作用?这并不会导致并行流中的竞争条件