본문 바로가기
Java

[Java] Stream - findAny(), findFirst() 차이

by 상후 2024. 11. 21.
728x90
반응형

 

 

공통점 - 조건에 일치하는 요소 1개를 반환하는 메서드

 

차이점

- findAny() - 병렬모드에서 순서를 보장하지 않음

- findFirst() - 병렬모드에서 맨 첫 번째 요소 반환을 보장함

 

즉, findFirst()는 스트림의 첫 번째 요소를 반환하지만, findAny()는 스트림에서 모든 요소를 ​​선택할 수 있음

 

List<String> elements = Arrays.asList("a", "b", "c");
Optional<String> findAny = elements.parallelStream().filter(n -> !n.startsWith("b")).findAny();
System.out.println(findAny.get()); // "a" or "c" 

Optional<String> findFirst = elements.parallelStream().filter(n -> !n.startsWith("b")).findFirst();
System.out.println(findFirst.get()); // "a"

 

안정적인 결과를 원한다면 findFirst()를 사용하는 게 좋을 것 같다.

 

 

참조 : https://stackoverflow.com/questions/35359112/difference-between-findany-and-findfirst-in-java-8

 

Difference between findAny() and findFirst() in Java 8

I am little confused between Stream#findAny() and Stream#findFirst() of the Stream API in Java 8. What I understood is that both will return the first matched element from the stream, for example...

stackoverflow.com

 

728x90
반응형

댓글