我想吧他们全部放入map集合中并且以id为key
时间: 2024-04-15 21:30:09 浏览: 68
你可以将两个 `List<Map>` 的数据合并到一个新的 `Map` 集合中,并以 id 作为键。以下是一个示例代码:
```java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MergeIntoMap {
public static void main(String[] args) {
List<Map<String, Object>> list1 = new ArrayList<>();
List<Map<String, Object>> list2 = new ArrayList<>();
// 假设已经初始化好了 list1 和 list2,包含相同 id 的数据
// 创建一个用于存储合并结果的 Map
Map<Integer, Map<String, Object>> mergedMap = new HashMap<>();
// 合并 list1 中的数据到 mergedMap
for (Map<String, Object> map1 : list1) {
int id = (int) map1.get("id");
mergedMap.put(id, map1);
}
// 合并 list2 中的数据到 mergedMap
for (Map<String, Object> map2 : list2) {
int id = (int) map2.get("id");
// 如果 mergedMap 中已存在相同 id 的键,则进行合并操作
if (mergedMap.containsKey(id)) {
Map<String, Object> existingMap = mergedMap.get(id);
existingMap.putAll(map2); // 合并 map2 到已存在的 map 中
} else {
mergedMap.put(id, map2);
}
}
// 打印合并结果
for (Map.Entry<Integer, Map<String, Object>> entry : mergedMap.entrySet()) {
int id = entry.getKey();
Map<String, Object> resultMap = entry.getValue();
System.out.println("id: " + id + ", merged data: " + resultMap);
}
}
}
```
在上面的示例中,我们首先创建了两个 `List<Map<String, Object>>`,分别为 `list1` 和 `list2`,假设它们已经初始化好了。
然后,我们创建了一个新的 `Map<Integer, Map<String, Object>>`,用于存储合并结果的数据。接下来,我们遍历 `list1`,将每个 map1 中的 id 作为键,map1 作为值放入 mergedMap 中。
然后,我们遍历 `list2`,将每个 map2 中的 id 作为键进行查找。如果在 mergedMap 中已存在相同 id 的键,则将 map2 的数据合并到已存在的 map 中;否则,将 id 和 map2 放入 mergedMap 中。
最后,我们打印合并结果。这里使用了 `entrySet()` 方法来遍历 mergedMap,并获取每个键值对的 id 和对应的合并后的 map。
希望这个示例能帮助你将两个 List<Map> 的数据合并到一个以 id 为键的 Map 集合中。如有其他问题,请随时提问。
阅读全文