람다표현식 변환
int count = 0;
for (String word : words) {
if (word.length() > 12) {
count++;
}
}
- stream
int count = words.stream().filter(word -> word.length() > 12).count();
- parallel stream
int count = words.parallelStream().filter(word -> word.length() > 12).count();
of 메서드 : 파라미터로 가변 인자를 받음
Stream<String> words = Stream.of("1", "2", "3");
empty 메서드 : 요소가 없는 스트림을 생성
Stream<String> emptyStream = Stream.empty();
map, flatMap 메서드의 차이
- map : Stream<Stream<String>> result = words.map(w -> wordList.stream());
- flatMap : Stream<String> result = words.flatMap(w -> wordList.stream());
서브스트림 추출과 스트림 결합
Stream<String> words = Stream.of("Hello World").skip(1); // 첫번째 요소 제거
Stream<Charater> combined = Stream.concat(Stream.of("Hello "), Stream.of("World")); // ['H', 'e', 'l', 'l', 'o' ...] 스트림을 돌려줌
상태 유지 변환
Collections.sort 메서드는 컬렉션을 직접 정렬하지만, Stream.sorted 메서드는 새롭게 정렬된 스트림을 리턴한다.
단순 리덕션
- 최종연산. 사용 후에는 스트림을 사용할 수 없다.
- count, min, max, findFirst, findAny, startsWith, allMatch, noneMatch
옵션 타입
- isPresent : Optional<T> 객체가 값을 포함하는지 알려준다.
- get : 감싸고 있는 요소가 존재할 때는 요소를 얻고, 없으면 NoSuchElementException을 던진다.
- Optional.of(T), Optional.empty()로 생성