2024.06.05.WED <D + 16>, Stream(스트림)
A. Stream (스트림)
A-2. Stream의 특징
1. 스트림은 데이터 소스를 변경하지 않는다
2. 스트림은 일회용이다
-> 스트림을 생성해 사용한 후, 한 번 사용하면 닫혀서 다시 사용할 수 없다.
다시 스트림을 사용하고 싶은 경우, 스트림 재생성후에 사용하면 된다.
3. 스트림의 작업은 내부 반복으로 처리한다.
void forEach ( Consumer <? super T> action )
// forEach()의 내부 구현부에는 반복문이 존재함 (내부 반복문).
A-3. List(리스트) 로 정렬하는 경우와 Array(배열)로 정렬하는 경우 (공용 메소드의 부재)
a. Collections.sort() -> 리스트 정렬시에 사용.
b. Array.sort() -> 배열 정렬 시 사용.
==> List, Array, File는 모두 동일한 인터페이스를 제공(표준화가 잘 되어 있음)
B. Stream의 연산.
B-1. 중간 연산
B-2. 최종 연산
B-3. 스트림 복합 연산의 예
Stream.distinct().sorted().forEach(System.out::println)
중간 연산 => distinct().sorted() -> 메소드 체인형태가 됨.
최종 연산 => forEach(System.out::println)
C. 파일
C-1. Stream 대상에 대한 종류
-> Stream emptyStream = Stream.empty();
-> 빈 Stream은 null이 아님.