본문 바로가기

TIL

2022/02/09 TIL

The Red : Stream

Map

매개변수로 Function 인터페이스를 받기 때문에 apply 라는 메소드에 할당한다.

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


apply 메소드는 원하는 값을 받고 원하는 값을 리턴할 수 있다.

 R apply(T t);

예제)

    @Test
    void test(){
        List<Integer> numberList = Arrays.asList(3, 6, -4)
                .stream()
                .map(x -> x * 2)
                .collect(Collectors.toList());

        assertThat(numberList).contains(6, 12, -8);
    }

sort

정렬할 때 사용한다.
예제)

    void test_sort_number(){
        List<Integer> numbers = Stream.of(1, -3, 4, 10, -2)
                .sorted()
                .collect(Collectors.toList());
        assertThat(numbers).containsExactly(-3, -2, 1, 4, 10);
    }

    @Test
    void test_sort_string(){
        List<String> stringList  = Stream.of("james", "sonny", "anny")
                .sorted((s1, s2) -> s1.compareTo(s2))
                .collect(Collectors.toList());

        assertThat(stringList).containsExactly("anny", "james", "sonny");
    }

distinct

중복값을 제거할 때 사용합니다.

    @Test
    void test_distinct(){
        List<Integer> numbers = Stream.of(1, 3, 2, 4, 3, 4)
                .distinct()
                .collect(Collectors.toList());

        assertThat(numbers).containsExactly(1, 3, 2, 4);
    }

flat

  • Map + Flatten 구조이다.
  • 중첩된 Stream을 해소할 때 사용한다.
    예제)
    @Test
    void test_flat_map(){
        String[][] strArray = new String[][]{
                {"a1, a2"},
                {"b1, b2"},
                {"c1, c2"},
        };
       List<String> stringList = Arrays.stream(strArray)
                .flatMap(x -> Arrays.stream(x)).collect(Collectors.toList());

        System.out.println(stringList);

      assertThat(stringList).containsExactly("a1, a2", "b1, b2", "c1, c2");
    }

'TIL' 카테고리의 다른 글

2022/02/11 TIL  (0) 2022.02.12
2022/02/10 TIL  (0) 2022.02.11
2022/02/08 TIL  (0) 2022.02.08
2022/02/07 TIL  (0) 2022.02.08
2022/02/06 TIL  (0) 2022.02.07