Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

Developer N

[JAVA] 자바 스트림(Stream) 활용 본문

STUDY/JAVA | SPRING

[JAVA] 자바 스트림(Stream) 활용

nnh 2023. 3. 23. 00:42
728x90

자바 스트림(Stream)

  • 자바의 스트림(Stream)은 Java 8에 추가된 기능으로, 컬렉션에 저장되어 있는 요소들을 하나씩 참조하여 람다식으로 처리하는 코드패턴이다.
  • 람다식과 함께 사용하므로 데이터의 처리 과정을 간결하게 작성할 수 있으며, 내부 반복자라는 것을 사용하여 병렬처리가 쉽다.

 

 

스트림 활용

  • filter()
    • 요소들을 조건에 따라 걸러내준다.
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5));
list.stream().filter(idx -> (idx > 1)).forEach(System.out::println);
// 결과
// 2, 3, 4, 5
  • sorted()
    • 리스트의 요소를 정렬한다.
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(3, 2, 5, 6, 4);
System.out.println(list.stream().sorted().collect(Collectors.toList()));
// 2, 3, 4, 5, 6
  • map()
    • 값을 변환해주는 람다식을 인자로 받아, 람다식을 적용해 새로운 데이터를 만들기 위해 사용한다.
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5));
list.stream().filter(v -> (v > 1)).map(v -> v * 10).forEach(System.out::println);
// 20, 30, 40, 50

 

  • findFirst()
    • 조건에 일치하는 요소 1개 리턴. 조건에 일치하는 요소가 없다면 empty 리턴
      •  
List<String> els = Arrays.asList("a", "bb", "bc", "c", "d");
System.out.println(els.stream().filter(s -> s.contains("b")).findFirst();
// bb
  • findAny()
    • 조건에 일치하는 요소 1개를 리턴
List<String> els = Arrays.asList("a", "bb", "bc", "c", "d");
System.out.println(els.stream().filter(s -> s.contains("b")).findAny();
// bb 또는 bc
  • findFirst()와 findAny()의 차이점
    • findFirst()는 여러 요소가 조건에 부합했을 때 Stream의 순서를 고려하여 가장 앞에 있는 요소 리턴
    • findAny()는 가장 먼저 찾은 요소를 리턴. 즉, Stream의 뒤에 위치한 요소가 리턴될 수도 있다.

 

  • orElse()
    • 조건에 해당하는 값이 없을 경우 사용
List<Integer> list = Arrays.asList(1, 2, 3);
System.out.println(list.stream().filter(v -> (v == 4)).findAny().orElse("none");
// none
728x90
Comments