假设我们有一个 Person 类,其中有两个属性:name 和 age。

首先,我们需要创建一个用于分组的函数,该函数将返回一个由 name 属性值组成的字符串:

Function<Person, String> groupByFunction = person -> person.getName();

然后,我们需要创建一个 Collector,以对属性值列表进行去重。我们可以使用 Collectors.toSet() 方法:

Collector<Person, ?, Set<Integer>> ageCollector = Collectors.mapping(Person::getAge, Collectors.toSet());

最后,我们可以使用 Collectors.groupingBy() 方法将对象列表按属性值分组:

Map<String, Set<Integer>> result = persons.stream().collect(Collectors.groupingBy(groupByFunction, ageCollector));

这将返回一个 Map,其中键是 name 属性值,值是 age 属性值的 Set,已经去重。

Java 8 分组:如何提取属性值并去重

原文地址: https://www.cveoy.top/t/topic/nw5M 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录