Java 8에서 여러 필드로 그룹화
Java 8에서 Collectors.groupingBy() 메서드는 일반적으로 다음을 기반으로 개체를 그룹화하는 데 사용됩니다. 특정 분야. 그러나 동일한 POJO에서 여러 필드별로 그룹화해야 하는 경우에는 어떻게 해야 할까요?
사용 가능한 여러 옵션이 있습니다:
Chaining Collectors
Map<String, Map<Integer, List<Person>>> map = people .collect(Collectors.groupingBy(Person::getName, Collectors.groupingBy(Person::getAge));
이 코드는 Person 개체를 먼저 이름별로 그룹화한 다음 연령별로 그룹화하여 중첩된 지도를 생성합니다.
그룹화 클래스 정의
class Person { record NameAge(String name, int age) { } public NameAge getNameAge() { return new NameAge(name, age); } } Map<NameAge, List<Person>> map = people.collect(Collectors.groupingBy(Person::getNameAge));
그룹화 기준(예: NameAge)을 캡슐화하는 레코드나 클래스를 생성하여 직접 그룹화할 수 있습니다. 원하는 필드.
페어 사용 클래스
import org.apache.commons.lang3.tuple.Pair; Map<Pair<String, Integer>, List<Person>> map = people .collect(Collectors.groupingBy(p -> Pair.of(p.getName(), p.getAge())));
타사 라이브러리를 사용하는 경우 쌍 클래스를 활용하여 그룹화 기준을 나타낼 수 있습니다.
최적의 옵션 선택
접근 방식 선택은 고객의 특정 요구 사항에 따라 다릅니다. 프로젝트:
위 내용은 `Collectors.groupingBy()`를 사용하여 Java 8에서 여러 필드를 그룹화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!