java 将List中多条name重复数据电话合并
时间: 2024-03-16 07:45:55 浏览: 108
Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并
可以通过以下步骤将List中多条name重复数据电话合并:
1. 定义一个HashMap,将List中的每个元素的name作为key,出现的次数作为value,将所有元素都放入HashMap中。
2. 遍历HashMap,将出现次数大于1的元素的电话合并成一个字符串,并将合并后的元素放入一个新的List中。
3. 遍历HashMap,将出现次数等于1的元素直接放入新的List中。
下面是Java代码示例:
```java
class Person {
private String name;
private String phone;
public Person(String name, String phone) {
this.name = name;
this.phone = phone;
}
public String getName() {
return name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
List<Person> list = new ArrayList<Person>();
list.add(new Person("张三", "111111"));
list.add(new Person("李四", "222222"));
list.add(new Person("张三", "333333"));
list.add(new Person("王五", "444444"));
list.add(new Person("李四", "555555"));
Map<String, Integer> map = new HashMap<String, Integer>();
for (Person person : list) {
if (map.containsKey(person.getName())) {
map.put(person.getName(), map.get(person.getName()) + 1);
} else {
map.put(person.getName(), 1);
}
}
List<Person> newList = new ArrayList<Person>();
for (Person person : list) {
if (map.get(person.getName()) > 1) {
for (Person p : newList) {
if (p.getName().equals(person.getName())) {
p.setPhone(p.getPhone() + "," + person.getPhone());
}
}
} else {
newList.add(person);
}
}
```
以上代码中,我们定义了一个List<Person>类型的list,并向其中添加了多个重复的Person对象。然后,我们定义了一个HashMap<String, Integer>类型的map,将list中的每个元素的name作为key,出现的次数作为value,将所有元素都放入了HashMap中。接着,我们遍历了list中的每个元素,如果该元素的name出现过,则将该元素的phone合并到newList中已存在的Person对象的phone中,否则将该元素直接放入newList中。最后,newList中的元素即为合并后的结果。
阅读全文