Stream<String> stream = list.stream();
Stream.forEach( item -> );
// list 컬렉션의 stream() 메서드로 Stream 객체를 얻고, forEach() 메소드로 요소를 어떻게 처리할지를 람다식으로 제공
// 컬렉션생성
Set<String> set = new HashSet<>();
set.add("홍길동")
set.add("최수정")
// Stream을 이용한 요소 반복 처리
Stream<String> stream = set.stream();
Stream.forEach( name -> System.out.println(name) );
// 출력 : 홍길동 \n 최수정
- 장점
1) 내부 반복자이므로 처리 속도가 빠르고 병렬 처리에 효율적이다.
2) 람다식으로 다양한 요소 처리를 정의한다.
3) 중간 처리와 최종 처리를 수행하도록 파이프 라인을 형성할 수 있다.
java.util.stream 패키지에는 스트림 인터페이스들이 있다. public class StreamExample {
public static void main(String args) throws Exception {
// data.text 파일의 경로 객체 얻기
Path path = Paths.get(StreamExample.class.getResource("data.txr").toURI());
// Path로부터 파일을 열고 한 행씩 읽으면서 문자열 스트림 생성, 기본 UTF-8 문자셋으로 읽음
Stream<String> stream = Files.lines(path, Charset.defaultCharset());
// 스트림 요소처리
stream.forEach(line -> System.out.println(line) );
stream.close();
}
}
출력: txt파일의 내용이 한 행씩 전부 그대로 출력된다.
# 5. 요소 걸러내기 : 필터링
# 6. 요소 변환 : 매핑
# 7. 요소 정렬
# 8. 요소를 하나씩 처리 : 루핑
# 9. 요소 조건 만족 여부 : 매칭
- 집계 : 대량의 데이터를 가공해서 하나의 값으로 축소하는 리덕션
- 스트림이 제공하는 기본 집계 메소드 : 카운팅, 최대, 최소, 평균, 합계
- 집계 메소드가 리턴하는 클래스가 optional class. 최종값을 저장하는 객체임. get(), getAsDouble() 등으로 호출하면 최종값을 얻는다
isPresent() - 집계값이 있는지 여부isPresent(Consumer) - 집계값이 있으면 Consumer에서 처리orElse(T/int...) - 집계값이 없을 경우 디폴트값 설정NoSuchElementException발생 1) isPresent() 메소드가 true를 리턴할 때만 집계값을 얻는다.
2) orElse() 매소드로 디폴트값 정하기
3)
링크: https://mangkyu.tistory.com/70
# 11. 요소 커스텀 집계
# 12. 요소 수집
# 13. 요소 병렬 처리