TIL

[TIL] 20240109 Java 스트림

yjyj0101 2024. 1. 9. 19:05

1. 스트림이란

Java8부터 사용할 수 있는 기술로 람다를 이용해서 배열과 컬렉션을 함수형으로 처리

기존의 긴 for문과는 달리 가독성과 재사용성을 높임 단, for loop 보단 느리다

  • 원본 데이터 소스를 변경x, 읽기전용.
  • 멀티쓰레드로 병렬처리 가능
  • 최종 연산 전까지 중간 연산을 수행하지 않는다.
  • 기본형 stream 제공 ex) Stream<Integer> 대신 IntStream 제공
  • 배열 / 컬렉션 / 기본타입형 / 병렬스트림이 있음

 

 

2. Stream 가공하기

  • Filtering(if문)

       스트림 내 요소들을 조건으로 걸러내는 작업

Stream<String> stream = list.stream()
	.filter(list -> list.contains("a"));
  • Mapping

      스트림 내 요소들을 하나씩 특정값으로 변환, 원하는 타입으로 변경가능

Stream<String> stream = list.stream()
	.map(String::toUpperCase);

 

  • Sorting

      스트림 내 요소들을 정렬하는 작업, Comparator 클래스 이용

Stream<String> stream = list.stream()
	.sorted(Comparator.comparingInt(String::length))

 

3. Stream 메서드

  • 계산 : count() sum() min() max() average()
  • 감소 : reduce()
    콜렉트 : collect()
  • 특정요소 체크 : anyMatch() allMatch() noneMatch()
  • 이터레이팅 : forEach()
  • 찾기 : findAny() findFirst()