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 |