聚合功能&行为 - 并行流

时间:2017-11-29 06:04:36

标签: java java-8 functional-programming java-stream

以下是使用

的示例

汇总功能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 只对从流生成的每个元素应用行为

作为从流生成的元素(一次一个),没有非瞬态存储,

没有任何额外的努力,聚合函数总是纯函数,没有任何副作用?这并不会导致并行流中的竞争条件

0 个答案:

没有答案
相关问题