Java

Java 8 Stream 에 대하여

nan2 2022. 1. 20. 16:27
반응형

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