출처 - Java의 정석 기초편 (남궁 성)
1. 스트림 중간연산
- 핵심: map(), flatMap()
Stream<T> distinct() // 중복 제거
Stream<T> filter(Predicate<T> predicate) // 조건에 안 맞는 요소 제외
Stream<T> limit(long maxSize) // 자르기
Stream<T> skip(long n) // 건너 뜀
Stream<T> peek(Comparator<T> action) // 잘 처리되었는지 중간 확인
Strear<T> sorted() // 정렬
Stream<T> sorted(Comparator<T> comparator)
Stream<R> map(Function<T,R> mapper) // 변환
Stream<R> flatMap(Function<T,Stream<R>> mapper)
2. skip(), limit()
- 스트림 건너 뛰기, 자르기
- 기본형 스트림에도 정의
IntStream intStream = IntStream.rangeClosed(1, 10) // 1,2,3,4,5,6,7,8,9,10
intStream.skip(3).limit(5).forEach(System.out::print); // 45678
3. filter(), distinct()
- 스트림 요소 걸러내기, 중복 제거
IntStream intstrea = IntStream.rangeClosed(1, 10); // 1~10
intStream.filter(i->i%2==2).filter(i->i%3!=0)forEach(System.out::print); // 24810
IntStream intStream = Intstream.of(1, 2, 2, 3, 3, 3);
intStream.distict().forEach(System.out::print); // 123
4. sorted()
- 스트림 정렬(정렬대상, 기준)
Stream<String> strStream = Stream.of("dd","aaa","CC","cc","b");
strStream.sorted().forEach(System.out::print); // CCaabccdd
5. Comparator의 메서드
- 정렬 기준 제공: comparing()
- 정렬 기준 추가: theComparing()
studentStream.sorted(Comparator.comparing(Stutent::getban)
.thencomparing(Student::getTotalScore)
.thencomparing(Student::getName))
.forEach(System.out::println);
6. map()
- 스트림 요소 변환
Stream<File> fileStream = Stream.of(new File("Ex1.java"), new File("Ex2.java");
Stream<String> filenameStream = fileStream.map(File::getName);
7. peek()
- 스트림 요소를 소비하지 않고 엿보기
fileStream.map(file::getName)
.filter(s->s.indexOf('.')!=-1) // 확장자 없는 것 제외
.peek(s->System.out.printf("filename=%s%n", s))
.forEach(system.out::println);
8. flatMap()
- 스트림의 스트림을 스트림으로 변환
Stream<String[]> strArrstrm = Stream.of(new String[] {"abc", "def"}, new String[] {"ABC, GHI"});
Stream<Stream<String>> strStrStrm = strArrStrm.map(Array::stream); // 스트림의 스트림
Stream<String> strStrm = strArrStrm.flatMap(Array::stream); // 스트림
'Java' 카테고리의 다른 글
스트림 최종연산 (0) | 2022.12.22 |
---|---|
Optional<T>객체 (0) | 2022.12.14 |
스트림(Stream) (0) | 2022.12.09 |
람다, 함수형 인터페이스, 메서드 참조 (0) | 2022.12.08 |
쓰레드 메서드 (0) | 2022.11.19 |