반응형
1. Stream 생성하기
- Collection(List, set, map ...)의 Stream 생성
대상collection.stream();
- Array(배열)의 Stream 생성
//방법1.
Arrays.stream(대상배열);
//방법2.
Stream.of(대상배열);
2. 데이터 가공 (중간연산)
- filter() : stream 에서 조건에 맞는 데이터만 걸러냄
int[] arr = {1, 2, 3, 4, 5};
int result = arr.stream().filter(i -> i > 3).count();
System.out.println(result); //result = 2;
* Predicate를 받아서 boolean 타입을 반환하는 람다식을 인자로 받음
- map() [데이터변환] : 기존 stream 요소를 변환하여 새로운 stream을 형성하는 연산(지정된 값을 특정한 형태로 변환)
String[] strArray = {"kim", "lee", "park"};
strArray.stream().map(s -> s.toUpperCase()).forEach(system.out::println);
- sorted() [정렬]
stream().sorted(); //오름차순
stream().sorted(Comparator.reverseOrder()); //내림차순
- distince() [중복제거]
3. 결과 (최종연산)
- max() [최댓값] / min() [최소값] / average() [평균] : 값이 비어있는 경우를 대비하여 Optional 반환
- sum() [총합] / count() [갯수] : 값이 비어있는 경우 0을 반환
- collect() [데이터 수집] : stream 요소를 다른 collection(list, set, map ...) 으로 결과를 수집하고 싶을 때 사용한다.
List<String> list = array.stream().collect(Collectors.toList());
Set<String> set = array.stream().collect(Collectors.toSet());
//stream 결과를 하나의 문자열로 연결할 때,
Collectors.joining(delimiter-구분자, prefix-맨앞에붙는문자, suffix-맨뒤에붙는문자)
- match() [조건검사] : stream 요소들이 특정한 조건을 충족하는지 여부를 확인할 때 사용한다.
인자는 Predicate 인터페이스를 받아 람다식으로 넣고, boolean 타입으로 반환한다.
anyMatch() : 1개라도 해당 조건을 만족하는지
allMatch() : 모든 요소가 해당 조건을 만족하는지
nonMatch() : 모든 요소가 해당 조건을 만족하지 않는지
- forEach() : stream 요소 대상으로 특정한 연산을 수행하고 싶을 때 사용한다. 실제 요소들에 영향을 줄 수 있으며, 반환값은 존재하지 않는다.
반응형
'Java' 카테고리의 다른 글
| [Java] Java8 Stream 사용법 (0) | 2022.03.29 |
|---|---|
| ApachePOI에 대하여 (0) | 2022.02.16 |
| Java.util.Calendar에 대하여 (0) | 2022.02.04 |
| java.util.Arrays에 대하여 (0) | 2022.01.20 |
| java.util.Calendar 에 대하여 (0) | 2021.12.23 |