list根据某些元素合并java
时间: 2023-09-01 11:11:11 浏览: 84
在Java中,您可以使用Map来合并列表中的元素。以下示例演示如何将一个包含Map的列表根据Map中的某个键值对进行合并:
```
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MergeList {
public static void main(String[] args) {
List<Map<String, Object>> listOfMaps = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("name", "Alice");
map1.put("age", 25);
map1.put("city", "New York");
listOfMaps.add(map1);
Map<String, Object> map2 = new HashMap<>();
map2.put("name", "Bob");
map2.put("age", 30);
map2.put("city", "San Francisco");
listOfMaps.add(map2);
Map<String, Object> map3 = new HashMap<>();
map3.put("name", "Charlie");
map3.put("age", 35);
map3.put("city", "New York");
listOfMaps.add(map3);
Map<String, Map<String, Object>> mergedMap = new HashMap<>();
for (Map<String, Object> map : listOfMaps) {
String city = (String) map.get("city");
if (mergedMap.containsKey(city)) {
mergedMap.get(city).putAll(map);
} else {
mergedMap.put(city, new HashMap<>(map));
}
}
List<Map<String, Object>> mergedList = new ArrayList<>(mergedMap.values());
System.out.println(mergedList);
}
}
```
在上面的示例中,我们首先创建一个包含三个Map的列表。然后,我们使用一个循环遍历列表中的所有Map。对于每个Map,我们提取其城市键值对,并检查是否已经存在于合并后的Map中。如果存在,则将当前Map的键值对添加到合并后的Map中的相应Map中。否则,我们将当前Map添加到合并后的Map中。最后,我们从合并后的Map中提取值,并将其转换为包含Map的List。
输出将是:
```
[{name=Alice, age=25, city=New York}, {name=Bob, age=30, city=San Francisco}, {name=Charlie, age=35, city=New York}]
```
请注意,由于Map中的键必须是唯一的,因此在将两个Map合并时,如果它们具有相同的键,则只会保留第一个键。
阅读全文