我有一个Person类的对象列表。人有两个属性:字符串名称,int点
我的原始列表包含以下对象:
person1 = Person("Samuel", 5)
person2 = Person("Maria", 3)
person3 = Person("Samuel", 3)
person4 = Person("Maria", 6)
person5 = Person("Clara", 1)
我想处理我的原始列表并获得以下列表:
person1 = Person("Samuel", 8)
person2 = Person("Maria", 9)
person3 = Person("Clara", 1);
因此,只允许具有唯一名称的对象。如果一个或多个对象具有相同的名称,则必须对这些对象的点进行求和
知道我该怎么做吗?
public static List<Person> mergeByName(List<Person> persons) {
return persons.stream().collect(Collectors.groupingBy(Person::getName,
Collectors.summingInt(Person::getPoints)))
.entrySet().stream()
.map(entry -> new Person(entry.getKey(), entry.getValue()))
.collect(Collectors.toList());
}