자바/스트림

collect() 메서드(2) - partitioningBy()

백_곰 2022. 4. 20. 14:46

1. 그룹화와 분할 - groupingBy(), partitioningBy()

- 그룹화는 스트림의 요소를 특정 기준으로 그룹화하는 것을 의미한다.

 

- 분할은 스트림의 요소를 두 가지, 즉, 지정된 조건에 일치하는 그룹과 일치하지 않는 그룹으로의

분할을 의미한다.

 

- 그룹화 메서드 groupingBy()는 스트림의 요소를 Function 매개변수로 받는다. 

 

- 분활 메서드 partitioningBy()는 스트림의 요소를 Predicate 매개변수로 받는다.

 

- 그룹화와 분할 메서드는 매개변수의 차이만 있을 뿐 동일하다. 그러나, 만약 두 개의 그룹으로

나눠야 한다면 partitioningBy()가 더 빠르고, 그 외는 groupingBy()를 사용한다.

 

- 그룹화와 분할의 결과는 Map에 담겨 반환된다.

 

- groupingBy()collect() 메서드(3)에서 할 것이다.

collect() 메서드(3) - groupingBy() (tistory.com)

 

collect() 메서드(3) - groupingBy()

 

kind-coding.tistory.com

 

 

( 아래의 Student의 정보가 있는 stu2클래스가 정의되어 있다고 가정하고 아래의 예제를 수행할 것이다. )

 

 

 

 

2. PartitioningBy()에 의한 분류

 

(1) 남,녀 학생의 성별을 분할하기.

 

 

 

(2) 남, 녀 학생의 성별로 분할 후, counting() 하기.

 

 

 

(3) 남, 녀 학생의 성별로 분할 후, 각각 최고 점수자를 출력하기.

 

( collectingAndThen()은 Optional<Stu>가 아닌 Stu를 뽑는 방법이다. )

 

 

 

(4) 남, 녀 학생의 성별을 분할 후, 점수가 100점 이하인 학생을 출력하기.