[java] 람다 표현식을 사용하여 스트림을 어떻게 그룹화할 수 있나요?

자바 8부터 추가된 람다 표현식과 스트림 API를 사용하면 데이터를 간편하게 그룹화할 수 있습니다. 이를 위해 Collectors.groupingBy() 메서드를 활용할 수 있습니다.

그룹화 기준 정의하기

먼저, 그룹화할 기준을 정의해야 합니다. 예를 들어, 객체를 그룹화할 때 해당 객체의 속성 값을 기준으로 그룹화할 수 있습니다.

Map<String, List<Person>> personByCity = 
    people.stream()
          .collect(Collectors.groupingBy(Person::getCity));

위 예제에서는 Person 객체를 ‘city’ 속성을 기준으로 그룹화하고 있습니다.

복수의 조건을 이용한 그룹화

복수의 조건으로 그룹화하려면 Collectors.groupingBy() 메서드에 조합된 람다 표현식을 전달하면 됩니다.

Map<String, Map<Integer, List<Person>>> personByCityAndAge = 
    people.stream()
          .collect(Collectors.groupingBy(Person::getCity, Collectors.groupingBy(Person::getAge)));

위 예제에서는 ‘city’와 ‘age’ 속성을 기준으로 그룹화하고 있습니다.

결과 확인

그룹화한 결과는 Map을 통해 얻을 수 있습니다. 이후에는 이를 원하는 형태로 가공하거나 활용하면 됩니다.

결론

람다 표현식과 스트림 API를 이용하여 데이터를 그룹화하는 것은 매우 간편하며, 다양한 기준으로 그룹화할 수 있습니다. 람다 표현식을 이용한 스트림 그룹화를 활용하여 데이터 처리를 효율적으로 수행할 수 있습니다.

이상으로 람다 표현식을 사용하여 스트림을 그룹화하는 방법에 대해 알아보았습니다.

자세한 내용은 아래 자료를 참고하세요.