java stream 不执行转换 不执行 管道中的操作

在一个复杂场景中,基于liststream中使用AtomicInteger 进行做数据统计,突然发现了个大问题。
stream不执行转换 操作例如 .collect(Collectors.toList()) 相关流的操作是不执行的。

代码如下:


    public static void main(String[] args) {
        List<String> ls = new ArrayList<String>(10){
            {
                add("f");
                add("u");
                add("c");
                add("k");
            }
        };
        AtomicInteger integer = new AtomicInteger(0);
        Stream<String> newLs = ls.stream().map(mp -> {

            integer.updateAndGet((v1) -> v1 + 1);
            return mp + "__";
        });
        System.out.println(integer.get());
        System.out.println(newLs.collect(Collectors.joining(" ")));
        System.out.println(integer.get());
    }

结果如图
image

原文地址:https://www.cnblogs.com/akashicbrother/p/14602496.html