遍历List集合,根据元素相同的值合并对象
时间: 2024-10-21 18:10:45 浏览: 46
遍历 `List` 集合并根据元素的某个相同属性值合并对象,通常是在处理需要去重或者简化数据的情况下。这在Java中可以使用Stream API或者传统的迭代器方法实现。以下是一个简单的例子,假设我们有一个 `Person` 类,包含姓名和年龄两个属性,我们要按照姓名合并年龄:
```java
import java.util.ArrayList;
import java.util.List;
class Person {
String name;
int age;
// 省略构造函数和getter/setter...
}
public List<Person> mergePeopleByName(List<Person> peopleList) {
return peopleList.stream()
.collect(Collectors.groupingBy(Person::getName, Collectors.reducing(new Person()));
}
// 或者使用传统的for-each循环和if判断
List<Person> mergedList = new ArrayList<>();
for (Person person : peopleList) {
if (!mergedList.isEmpty() && mergedList.get(mergedList.size() - 1).getName().equals(person.getName())) {
mergedList.get(mergedList.size() - 1).setAge(mergedList.get(mergedList.size() - 1).getAge() + person.getAge());
} else {
mergedList.add(person);
}
}
```
在这个例子中,`mergePeopleByName` 方法会返回一个新的列表,其中每个人的姓名都只出现一次,年龄则是所有同名人的年龄之和。如果你想要的结果是每个姓名下保持各自的对象,而不是累加年龄,只需要去掉 `Collectors.reducing` 的部分即可。
阅读全文