【发布时间】:2018-11-09 23:32:30
【问题描述】:
任何人都可以指向一个官方 Java 文档,该文档描述了 Stream 将为每个元素调用每个“非干扰和无状态”中间操作的次数。
例如:
Arrays.asList("1", "2", "3", "4").stream()
.filter(s -> check(s))
.forEach(s -> System.out.println(s));
public boolean check(Object o) {
return true;
}
上面目前会调用check方法4次。
在当前或未来版本的 JDK 中,check 方法的执行次数是否可能多于或少于从 List 或任何其他标准 Java API 创建的流中元素的数量 ?
【问题讨论】:
-
这个问题背后有什么动机吗?比如,你想添加像 verify(times(4)).check(anyBool) 这样的单元测试,这样它以后就不会失败?
-
我看不出为什么
stream会返回超过4的值? -
动机是,如果 check 也对每个元素进行重要处理,那么我想确保它只对流中的每个元素执行一次。
-
@chrylis。我认为这不会有什么不同。
标签: java java-8 java-stream