SeouliteLab

[Java/자바] Stream findAny()와 findFirst()의 차이점 본문

프로그래밍

[Java/자바] Stream findAny()와 findFirst()의 차이점

Seoulite Lab 2024. 3. 11. 09:10

Java Stream API에서 findAny()와 findFirst() 메서드는 스트림에서 요소를 검색하는 데 사용됩니다. 이 두 메서드의 차이점에 대해 살펴보겠습니다.

findAny() 메서드

findAny() 메서드는 병렬 스트림에서 임의의 요소를 반환합니다. 병렬 스트림에서는 요소가 여러 스레드에 의해 병렬로 처리되므로, 요소의 순서가 보장되지 않습니다. 따라서 이 메서드는 주로 요소의 순서에 관계없이 스트림에서 임의의 요소를 찾을 때 사용됩니다.

import java.util.stream.Stream;

public class FindAnyExample {
    public static void main(String[] args) {
        Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);

        // 병렬 스트림에서 임의의 요소 찾기
        Integer anyNumber = stream.parallel().findAny().orElse(null);
        System.out.println("Any number: " + anyNumber);
    }
}

findFirst() 메서드

findFirst() 메서드는 순차 또는 병렬 스트림에서 첫 번째 요소를 반환합니다. 순차 스트림의 경우에는 첫 번째 요소가 스트림의 시작 부분에서 반환되고, 병렬 스트림의 경우에는 여러 스레드에 의해 동시에 처리되는 요소 중에서 첫 번째 요소가 반환됩니다.

import java.util.stream.Stream;

public class FindFirstExample {
    public static void main(String[] args) {
        Stream<String> stream = Stream.of("apple", "banana", "cherry", "date", "elderberry");

        // 순차 스트림에서 첫 번째 요소 찾기
        String firstFruit = stream.findFirst().orElse(null);
        System.out.println("First fruit: " + firstFruit);
    }
}