: 자바 컬렉션을 처리하는 방법 중 하나
-이터레이터는 컬렉션의 요소에 대한 반복자 제공
-스트림은 데이터의 흐름을 나타내는 개념
스트림을 사용하여 요소를 처리하고
필터링, 매핑, 정렬, 그룹화 및 통계 등 다양한 작업 수행
(중간 연산 -> 최종연산)
-이터레이터 : 명시적인 루프와 조건문을 사용하여 데이터 처리
-스트림 : 내부적으로 반복 작업 처리, 요소 처리하는 람다식 사용
"데이터를 병렬처리 가능" 데이터 처리속도가 빨라짐
- 이터레이터 : 컬렉션에 종속적(이터레이터를 사용하기 위해 컬렉션 생성)
- 스트림 : 독립적, 배열, 파일, 디렉토리 등 다양한 데이터 소스에 사용 가능
- 이터레이터 : next() 메서드를 호출할 때마다 다음 요소 반환. 직접적으로 사용
->컬렉션 상태가 바뀐다면 예외 발생의 위험성 존재
- 스트림 : 원본의 상태를 변경하지 않음. 간접적으로 사용함
스트림연산의 결과가 stream 타입이면 연속적으로 호출할 수 있다.
스트림 연산의 연속 호출은 여러 개의 스트림이 연결되어 스트림 파이프라인 형성
중간연산은 몇 개이든 상관없다
느긋한 연산 중간연산.
최종연산이 데이터 소스에게 원소를 요구할 때 까지
아무 연산도 수행하지않음.
조급한 연산 최종연산
모든 자료형에 대한 null 값을 사용하기 위해서 쓴다
>그래서 사실 별로 안씀.
값이 있을 수도 있고 없을 수 도 있는 객체를 나타내기 위해 사용
>null
1. NullPointException 방지
- 객체가 null인 경우에도 예외 발생 x
2. 코드 가독성 향상
- 값이 없는 경우에 대한 처리를 명시적으로!
empty
- 메서드사이에 체이닝 가능
○ 옵셔널 사용하면 결과값도 옵셔널 객체로 나옴
○ 형변환을 하지않아도 옵셔널을 받는 메소드끼리 유기적으로 연결 가능
- 람다식 더 간결하게 표현하는 방법중 하나
참조할 메소드 이름과 메소드를 호출할 객체(참조)를 지정하여
메소드 접근을 가능하게 해줌
Util :: print
s -> Util.print(s)
필터링
매핑
: 연결 하여 새로운 스트림 생성
하나의 통에 연결해주는것
스트림의 각 요소에 대해 함수 적용후 그 결과를 새로운 스트림으로 반환
스트림의 각 요소에 대한 함수를 적용하고 하나의 스트림으로 병합
reduce(): 스트림의 모든 요소를 하나의 값으로 줄이는 작업
원소 개수 반환
대부분의 프로그램 자료를 입력받는 기능과
저장하거나 쓰는 등의 출력 기능을 제공
음악이나 동영상 파일 실행, 채팅, SNS, 사진공유
출력 : 모니터, 스피커
입력 : 키보드, 마우스
데이터(자료)의 흐름
자바에서 제공하는 독립적이고 효율적인 입출력 기능
다른 언어는 입출력 장치에 따라 코드를 다르게 작성해야하는경우가 있음.
입출력 장치 종류와 관계없이
모든 입출력을 처리가 가능
->스트림으로!
스트림은 단방향으로 자료가 이동.
입력과 출력을 동시에 진행 불가능