Wookim

Java Stream 중개 연산 (2) 본문

programming language/Java

Java Stream 중개 연산 (2)

개발자인 경우 2022. 1. 19. 18:54

1. filter (조건식 통과한 데이터만 스트림화)

/** 8보다 큰 값만 출력 */
IntStream.range(0, 15)
          .filter(i-> i > 8)
          .forEach(i -> System.out.print(i + " "));
        
-- output
-- 9 10 11 12 13 14
/** 0을 포함한 2의 배수 출력 */
IntStream.range(0, 15)
        .filter(i-> i % 2 == 0)
        .forEach(i -> System.out.print(i + " "));

-- output
-- 0 2 4 6 8 10 12 14
/** 0을 포함한 3의 배수 출력 */
IntStream.range(0, 15)
        .filter(i-> i % 3 == 0)
        .forEach(i -> System.out.print(i + " "));

-- output
-- 0 3 6 9 12

2. distinct (스트림에서 중복값 제거한 결과 스트림화)

/** 중복된 데이터 제거 후 출력 */
Stream.of(1, 2, 2, 3, 3, 3)
      .distinct()
      .forEach(i -> System.out.print(i + " "));

-- output
-- 1 2 3

3. map (스트림 → 다른 스트림으로 변환)

Stream.of(1, 2, 2, 3, 3, 3)
      .map(i -> i * 2)
      .forEach(i -> System.out.print(i + " "));

-- output
-- 2 4 4 6 6 6
/** distinct + map 활용 예제 */
Stream.of(1, 2, 2, 3, 3, 3)
      .distinct()
      .map(i -> i * 2)
      .forEach(i -> System.out.print(i + " "));

-- output
-- 2, 4, 6
/** map 의 활용 */
Stream.of("abc", "aasda", "asdawdsadas")
      .map(s -> s.length())
      .forEach(s -> System.out.print(s + " "));

-- output
--1 3 5

4. flatMap (스트림 → 스트림 추가생성 → 단일 스트림으로 합치기)

Stream.of("Hello Wolrd", "I am Wookim", "Good to See you")
      .flatMap(s -> Stream.of(s.split(" "))
      .forEach(s -> System.out.println(s));

/** 
 * "Hello Wolrd" -> ["Hello", "Wolrd"] -> Stream화 -> flatMap 모으기
 * "I am Wookim" -> ["I", "am", "Wookim"] -> Stream화 -> flatMap 모으기
 * "Good to See you" -> ["Good", "to", "See", "you"] -> Stream화 -> flatMap 모으기

 * flatMap 구문 안에 새로운 스트림을 생성
 * 새로 생성된 스트림을 하나의 스트림에 모으기
 */

-- output
-- Hello
-- Wolrd
-- I
-- am
-- Wookim
-- Good
-- to
-- See
-- you

 

 

reference

http://tcpschool.com/java/java_stream_intermediate

'programming language > Java' 카테고리의 다른 글

java Stream 최종연산 (3)  (0) 2022.01.21
Java Stream(1)  (0) 2022.01.10
Java Stream (0)  (0) 2022.01.10
Spring 예외 처리 패턴  (2) 2022.01.03
spring application 실행 환경 분리 (프로파일)  (0) 2021.07.09
Comments