过滤处理列表中包含的对象的属性的列表



我有一个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());
}

最新更新