본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

JAVA

collect() 그룹화/분할하다: groupingBy() partitioningBy()

groupingBy() 
주어진 함수에 따라 스트림의 요소들을 그룹화. 
각 그룹은 함수의 결과에 따라 맵의 키로 표현된다.

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
    public static void main(String[] args) {
        Stream<String> stream = Stream.of("Apple", "Banana", "Orange", "Apricot", "Avocado");

        // 문자열의 길이에 따라 그룹화
        Map<Integer, List<String>> result = stream.collect(Collectors.groupingBy(String::length));

        System.out.println("Result: " + result); 
        // 출력: Result: {5=[Apple], 6=[Banana, Orange], 7=[Apricot, Avocado]}
    }
}

 

 

 

 

partitioningBy() 
주어진 조건에 따라 스트림의 요소들을 두 그룹으로 분할. 
조건을 만족하는 요소들은 참(true)을 반환하는 그룹에 속하고, 

그렇지 않은 요소들은 거짓(false)을 반환하는 그룹에 속한다.

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
    public static void main(String[] args) {
        Stream<String> stream = Stream.of("Apple", "Banana", "Orange", "Apricot", "Avocado");

        // 문자열의 길이가 6 이상인지에 따라 분할
        Map<Boolean, List<String>> result = stream.collect(Collectors.partitioningBy(s -> s.length() >= 6));

        System.out.println("Result: " + result); // 출력: Result: {false=[Apple, Banana, Orange], true=[Apricot, Avocado]}
    }
}