测试代码
public static void main(String[] args) {
List<Integer> list =new ArrayList<>();
for (int i=0;i<10000;i++){
list.add(i);
}
Integer integer = list.stream()
.filter(integer1 -> {
System.out.println(integer1);
return integer1 > 5;
}).findAny().get();
System.out.println();
System.out.println(integer);
}
- 单纯使用stream流时,findany和findFirst效果都是一样的,返回6,因为都是从0开始递增的判断,所以结果都是6.
- 使用parallelStream流时,findAny和findFirst效果不一样了,因为findFirst时找到大于5的第一个,所以仍然是返回6,但是findAny返回的值是不固定的,只要大于6的成立就马上返回.
总结
不并行使用流时,两者效果一致。当并行使用时,如果只是想找到了就成立就使用findAny,否则采用findFirst.