
	                	                 
CollectionFind::groupBy 메서드는 컬렉션 내의 데이터를 지정된 기준에 따라 그룹화하는 메서드입니다. 여러 조건을 사용할 때는 다음과 같이 사용할 수 있습니다.
#hostingforum.kr
java
List people = Arrays.asList(
    new Person("John", 20),
    new Person("Alice", 20),
    new Person("Bob", 30),
    new Person("Charlie", 30)
);
Map> grouped = people.stream()
    .collect(Collectors.groupingBy(
        person -> person.getName() + person.getAge()
    ));
// 또는
Map> grouped = people.stream()
    .collect(Collectors.groupingBy(
        person -> person.getName() + person.getAge(),
        Collectors.toList()
    ));
위 예제에서 `groupingBy` 메서드는 `Person` 객체의 `getName()`과 `getAge()`를 조합하여 그룹화 키를 생성합니다.
그룹화 조건이 여러 개일 때는 다음과 같이 사용할 수 있습니다.
#hostingforum.kr
java
List people = Arrays.asList(
    new Person("John", 20, "Male"),
    new Person("Alice", 20, "Female"),
    new Person("Bob", 30, "Male"),
    new Person("Charlie", 30, "Female")
);
Map> grouped = people.stream()
    .collect(Collectors.groupingBy(
        person -> person.getName() + person.getAge() + person.getGender()
    ));
// 또는
Map> grouped = people.stream()
    .collect(Collectors.groupingBy(
        person -> person.getName() + person.getAge() + person.getGender(),
        Collectors.toList()
    ));
위 예제에서 `groupingBy` 메서드는 `Person` 객체의 `getName()`, `getAge()`, `getGender()`를 조합하여 그룹화 키를 생성합니다.
또한, `groupingBy` 메서드는 여러 조건을 사용할 때 `Collectors` 클래스의 `toMap` 메서드를 사용할 수 있습니다.
#hostingforum.kr
java
List people = Arrays.asList(
    new Person("John", 20, "Male"),
    new Person("Alice", 20, "Female"),
    new Person("Bob", 30, "Male"),
    new Person("Charlie", 30, "Female")
);
Map>> grouped = people.stream()
    .collect(Collectors.groupingBy(
        person -> person.getName(),
        Collectors.groupingBy(
            person -> person.getAge(),
            Collectors.groupingBy(person -> person.getGender())
        )
    ));
위 예제에서 `groupingBy` 메서드는 `Person` 객체의 `getName()`, `getAge()`, `getGender()`를 조합하여 그룹화 키를 생성합니다.
2025-05-16 12:15