java中我有两个list<Map>一个其中有id和name,一有id和value,他们的id是相同的,我想把他们合并,并且保留id和name和value
时间: 2024-04-15 20:30:03 浏览: 243
Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并
你可以使用 Java 中的循环和条件语句来合并两个 `List<Map>`,并保留相同的 id、name 和 value。以下是一个示例代码:
```java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MergeLists {
public static void main(String[] args) {
List<Map<String, Object>> list1 = new ArrayList<>();
List<Map<String, Object>> list2 = new ArrayList<>();
// 假设已经初始化好了 list1 和 list2,包含相同 id 的数据
// 创建一个用于存储合并结果的列表
List<Map<String, Object>> mergedList = new ArrayList<>();
// 遍历 list1
for (Map<String, Object> map1 : list1) {
// 获取当前 map1 的 id
int id = (int) map1.get("id");
// 在 list2 中查找相同 id 的 map2
Map<String, Object> map2 = list2.stream()
.filter(m -> (int) m.get("id") == id)
.findFirst()
.orElse(null);
// 如果找到了相同 id 的 map2
if (map2 != null) {
// 创建一个新的 map,保存合并后的数据
Map<String, Object> mergedMap = new HashMap<>();
mergedMap.put("id", id);
mergedMap.put("name", map1.get("name"));
mergedMap.put("value", map2.get("value"));
// 将合并后的 map 添加到结果列表中
mergedList.add(mergedMap);
}
}
// 打印合并结果
for (Map<String, Object> mergedMap : mergedList) {
System.out.println(mergedMap);
}
}
}
```
在上面的示例中,我们首先创建了两个 `List<Map<String, Object>>`,分别为 `list1` 和 `list2`,假设它们已经初始化好了。
然后,我们创建了一个新的 `List<Map<String, Object>>`,用于存储合并结果的数据。接下来,我们使用循环遍历 `list1`,对于每个 map1,我们提取其 id,并在 `list2` 中查找相同 id 的 map2。如果找到了相同 id 的 map2,则创建一个新的 map,将 id、name 和 value 保存到其中,然后将该 map 添加到结果列表中。
最后,我们打印合并结果的每个 map。
希望这个示例能帮助你合并两个 List<Map> 并保留相同的 id、name 和 value。如有其他问题,请随时提问。
阅读全文