스트림의 중간연산
✔ 스트림 자르기 - skip(), limit()
✔ 스트림의 요소 걸러내기- filter(), distinct()
✔ 스트림 정렬하기 - sorted()
👉 정렬할때 필요한 것: 1. 정렬 대상. 2. 정렬 기준
static Comparator<String> CASE_INSENSITIVE_ORDER = new CaseInsensitiveComparator();
// 자주사용하므로 comparator에서 아예 만들어서 갖고 있음
✔ Comparator의 comparing()으로 정렬기준을 제공
comparing(Function<T,U> keyExtractor)
comparing(Functino<T,U> keyExtractor, Comparator<U> keyComparator)
studentStream.sorted(Comparator.comparing(Student::getBan))//반별로 정렬.(Student s)->s.getBan()
.forEach(System.out::println);
✔ 추가정렬기준을 제공할 때는 thenComparing()을 사용 (정렬기준이 여러개일때)
thenComparing(Comparator<T> other)
thenComparing(Function <T, U> keyExtractor)
thenComparing(Function <T, U> keyExtractor, Comparator<U> keyComp)
studentStream.sorted(Comparator.comparing(Student::getBan) // 반별로 정렬
.thenComparing(Student::getTotalScore) // 총점별로 정렬
.thenComparing(Student::getName) // 이름별로 정렬
.forEach(System.out::println);
✔ 스트림의 요소 변환 - map()
: <T> 타입의 스트림이 <R> 타입의 스트림으로 변환
✔ 스트림의 요소를 소비하지 않고 엿보기 - peek()
: forEach()와 유사. 얘는 최종연산에 사용하고 peek()는 중간연산에서 사용하기 때문에 반환값이 다름
: 중간 작업결과 확인 용도 (디버깅 용도)
✔ 스트림의 스트림을 스트림으로 변환 - flatMap()
👉 스트림의 스트링으로 "문자열"을 하나씩 스트링 값에 넣고 싶은데 map을 사용하면 스트림의 스트림<String>으로 변환됨
👉 이럴때는 map이 아닌 flatMap사용
'🔥 Vamos > Java' 카테고리의 다른 글
1119 | 자바의 정석 기초편 :: 14-40~14-55 (0) | 2022.11.19 |
---|---|
1118 | 자바의 정석 기초편 :: ch14-35~14-39 (0) | 2022.11.18 |
1117 | 자바의 정석 기초편 :: ch14-23~14-25 (0) | 2022.11.17 |
1116 | 자바의 정석 기초편 :: ch14-17~14-22 (0) | 2022.11.16 |
1116 | 자바의 정석 기초편 :: ch14-15~14-16 (스트림) (0) | 2022.11.16 |