ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [java] stream
    java/java 공부 2022. 4. 2. 16:36

    오랜만에 자바 복습할 스트림을 정리해보았습니다.

     

    스트림이란?

    데이터의 흐름을 의미

    collection 형태로 구성된 데이터를 람다를 이용해 가나결하고 직관적으로 프로세스하게 해줌

    stream을 사용하면 for, while 을 대체할 수 있음

    병렬처리를 쉽게 할 수 있음

    여러가지 중간 처리(스트림 종류)를 이어붙여서 사용하는것도 가능함

    stream 종류

    ※ Filter : 만족하는 데이터만 걸러내는데 사용

                     Predicate 에 true 를 반환하는 데이터만 존재하는 stream 을 리턴

    Stream<T> filter(Predicate<? supuer T> Predicate);

    (사용 예)

    List<Integer> filteredNumber = Stream.of(1, -2, 3, -4, 5, -6)
            .filter(x -> x > 0)
            .collect(Collectors.toList());

    결과는 1, 3, 5 만 걸러져서 나옴

     

     

    ※ Map : 데이터를 변형하는데 사용

                   데이터에 해당 함수가 적용된 결과물을 제공하는 stream을 리턴

    <R> Stream<R> map(Function<? super T, ? extends R> mapper);

    (사용 예)

    List<Integer> numberList2 = Stream.of(2, 8, -2)
            .map(x -> x * 2)
            .collect(Collectors.toList());

    결과는 4, 16, -4 가 나옴

     

     

    ※ sorted : 데이터가 순서대로 정렬된 stream 을 리턴

                       데이터 종류에 따라 Comparator가 필요할 수 있음

    Stream<T> sorted();
    Stream<T> sorted(Comparator<? super T> comparator);

    (사용 예)

    List<Integer> numbers = Arrays.asList(3, -2, 7, 5);
    List<Integer> sortedNumbers = numbers.stream()
            .sorted()
            .collect(Collectors.toList());

    결과는 -2, 3, 5, 7 이 정렬되어 나옴

     

     

    ※ distinct : 중복된 데이터가 제거된 stream 을 리턴

    Stream<T> distinct();

    (사용 예)

    List<Integer> integerList = Arrays.asList(3, 1, 2, 5, 1, 2, 7);
    List<Integer> distinctList = integerDistinctList.stream()
                            .distinct()
                            .collect(Collectors.toList());

    결과는 3, 1, 2, 5, 7 이 나옴

     

     

    ※ FlatMap : 스트림의 스트림

                          Map + Flatten

                          데이터에 함수를 적용한 후 중첩된 stream 을 연결하여 하나의 stream 으로 리턴

    <R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper);

    'java > java 공부' 카테고리의 다른 글

    [java] SimpleDateFormat 패턴 종류  (0) 2021.05.04

    댓글

Designed by Tistory.