자바 8부터 도입된 문법으로 배열 및 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리 할 수 있도록 하는 반복자입니다.
- 스트림의 처리 과정은 생성, 중간연산, 최종연산 세 단계의 파이프 라인으로 구성
- 스트림은 원본 데이터 소스를 변경하지 않음 (READ - ONLY)
- 스트림은 일회용이다. (ONETIME-ONLY)
- 스트림은 내부반복자이다.
ex)
String[] arr = new String[]{"안녕","하세요","반갑","습니다"};
Stream<String> stream1 = Arrays.stream(arr);
Stream<String> stream2 = Stream.of(arr);
ex)
List<Integer> list = Arrays.asList(1,2,3,4);
Stream<Integer> stream = list.stream();
IntStream ints = new Random().ints();
//생성범위 10개로 제한
IntStream ints = new Randoms().int().limit(10);
//특정 범위의 정수
IntStream intStream = IntStream.rangeClosed(1,10);
filter() : Stream에서 조건에 맞는 데이터 만을 정제하여 더 작은 컬렉션 생성, 조건이 참이 되는 요소만 필터링 한다.
distinct() : Stream의 요소들에서 중복된 데이터가 존재하는 경우 중복된 요소를 제거
- sum() = 합계
- count() = 개수
- average() = 평균
- max() = 최대값
- min() = 최소값
🔸 allMatch() = 모든 요소가 조건을 만족하는지 여부를 판단
🔸 noneMatch() = 모든 요소가 조건을 만족하지 않는지 여부를 판단
🔸 anyMatch() = 하나라도 조건을 만족하는 요소가 있는지 여부를 판단