先上代码:
public static void main(String[] args) {
List<String> list1 = Arrays.asList("A1", "B1", "C1", "A2", "B2", "C2", "A3", "B3", "C3");
List<String> list2 = Arrays.asList("A1", "B1", "C1", "A2", "B2", "C2", "A3", "B3", "C3");
Optional<String> a = list1.parallelStream().filter(s -> s.contains("A")).findAny();
Optional<String> b = list2.parallelStream().filter(s -> s.contains("B")).findFirst();
System.out.println("====findAny()======"+a.get());//A1/A2/A3
System.out.println("====findFirst()===="+b.get());//B1
}
并行流前提下,从执行结果看:
findAny()每次结果是符合条件的任意结果,不固定,这是为了最大程度地提高并行操作的性能。
findFirst()每次结果固定结果,第一个满足条件的,即B1。
原因分析: