为什么在java-8流中没有执行合并器函数减少操作?
发布时间:2020-12-15 04:39:26 所属栏目:Java 来源:网络整理
导读:参见英文答案 Java 8 Stream – Reduce function’s combiner not getting executed ????????????????????????????????????2个 我试图了解流中的reduce方法是如何工作的. Stream.of(1,2,3,4,5,6,7).reduce(new ArrayList(),(ListInteger l,Integer a) - {l.a
参见英文答案 >
Java 8 Stream – Reduce function’s combiner not getting executed ????????????????????????????????????2个
我试图了解流中的reduce方法是如何工作的. Stream.of(1,2,3,4,5,6,7).reduce(new ArrayList<>(),(List<Integer> l,Integer a) -> {l.add(a);return l;},(List<Integer> l1,List<Integer> l2) -> { System.out.println("l1 is" + l1 + "l2 is " + l2); l1.addAll(l2); return l1; }).forEach(System.out::println); System.out.println(“l1是”l1“l2是”l2“)行永远不会打印出来. 谢谢, 解决方法
它仅在流并行时被调用.在这种情况下,流值被分成两半(递归地),每一半被缩减为一个列表,然后必须将两个列表组合在一起.
请注意,减少不应该改变作为参数接收的值(在本例中为列表).它应该返回一个新值.在这种情况下,这是一个可变的减少(即collect())是一个更好的选择. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |