java8 分组分组的Value取对象的属性
Java 8中的Stream API提供了一个方便的方法来对对象进行分组。
假设我们有一个Person类,包含name和age属性:
public class Person {
private String name;
private int age;
// constructors, getters and setters
}
我们想按照年龄对Person对象进行分组,并返回一个Map<Integer, List
使用Java 8的Stream API,可以轻松地实现此操作:
List<Person> people = ... // list of Person objects
Map<Integer, List<Person>> peopleByAge = people.stream()
.collect(Collectors.groupingBy(Person::getAge));
在这个例子中,我们使用Collectors.groupingBy方法来按照Person对象的年龄属性进行分组。我们提供一个函数引用Person::getAge作为分组依据,它将返回一个整数,表示Person对象的年龄。该方法将返回一个Map<Integer, List
如果我们想要分组后的值是Person对象的name属性,可以像这样修改代码:
Map<Integer, List<String>> namesByAge = people.stream()
.collect(Collectors.groupingBy(Person::getAge, Collectors.mapping(Person::getName, Collectors.toList())));
在这个例子中,我们使用Collectors.mapping方法来将Person对象的name属性映射为字符串,并使用Collectors.toList方法将它们收集到一个列表中。然后,我们将这个列表作为值传递给groupingBy方法,这将产生一个Map<Integer, List
原文地址: https://www.cveoy.top/t/topic/cxLa 著作权归作者所有。请勿转载和采集!