Skip to content

Java Stream - findAny()와 findFirst() #1

@hyejinhong

Description

@hyejinhong

Stream

스트림은 컬렉션, 배열 등의 요소를 하나씩 참조하며 반복 처리를 하는 것을 돕는 기능입니다.
스트림을 사용할 경우 for문, if문 등을 줄일 수 있습니다.

☁️ Stream의 특징

  1. 데이터를 변경하지 않는다.
  2. 일회용이다.
  3. 반복문이 내부에 숨어있다.

☁️ Stream의 findAny() 메소드

스트림에서 가장 먼저 탐색되는 요소를 리턴합니다.

ArrayList<String> list = Arrays.asList("a", "ab", "abc", "b", "c", "d");
Optional<String> result = list.stream().filter(s -> s.startsWith("a")).findAny();

System.out.println(result.get());

결과: a or ab or abc (실행할 때마다 결과 값이 달라집니다.)
❓ 왜 ❓ findAny()는 멀티 스레드가 스트림을 실행할 때 가장 먼저 찾은 요소를 리턴하기 때문입니다.

☁️ Stream의 findFirst() 메소드

스트림에서 첫 번째 요소를 찾아서 리턴합니다.

ArrayList<String> list = Arrays.asList("a", "ab", "abc", "b", "c", "d");
Optional<String> result = list.stream().filter(s -> s.startsWith("a")).findAny();

System.out.println(result.get());

결과 : a

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions