当我使用count()
函数“内部测试”消息时,调用的次数达到了预期的三倍,但是当我删除count(
)函数时,则没有调用test()
函数。从count()
函数文档中,我了解到它返回给定流中元素的数量。
public class Start {
public static int test(int input) {
System.out.println("inside processRecord");
return input;
}
public static void main(String[] args) throws InterruptedException {
List<Integer> data = Arrays.asList(1,2,3);
data.parallelStream().map(Start::test).count();
}
}
答案 0 :(得分:2)
因为count
是一种终端操作,并且仅当存在一个终端时才调用/执行流;据说他们很懒...
请注意,在Java-9及更高版本中,您的示例不会以任何一种方式打印来自map
的那些语句,因为您关心的只是多少和map
有点没用...
答案 1 :(得分:0)
中间操作(如map)返回一个流,并由返回非流值的终端操作调用。