
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