Java 8 分组:如何提取属性值并去重
假设我们有一个 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,已经去重。
原文地址: https://www.cveoy.top/t/topic/nw5M 著作权归作者所有。请勿转载和采集!