两个列表合并为一个列表,根据其中一个列表的属作为 key,其他属性合并在一起作为 key 的值是一个列表,用 Java 代码表示
时间: 2024-03-14 07:48:36 浏览: 9
可以使用 Java 的 Map 接口来实现这个功能。具体代码如下所示:
```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<Map<String, Object>>();
List<Map<String, Object>> list2 = new ArrayList<Map<String, Object>>();
// 添加 list1 的数据
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("key", "A");
map1.put("value1", "1");
list1.add(map1);
Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("key", "B");
map2.put("value1", "2");
list1.add(map2);
// 添加 list2 的数据
Map<String, Object> map3 = new HashMap<String, Object>();
map3.put("key", "A");
map3.put("value2", "3");
list2.add(map3);
Map<String, Object> map4 = new HashMap<String, Object>();
map4.put("key", "B");
map4.put("value2", "4");
list2.add(map4);
// 合并两个列表
Map<String, List<Map<String, Object>>> mergedMap = new HashMap<String, List<Map<String, Object>>>();
for (Map<String, Object> map : list1) {
String key = map.get("key").toString();
if (!mergedMap.containsKey(key)) {
mergedMap.put(key, new ArrayList<Map<String, Object>>());
}
mergedMap.get(key).add(map);
}
for (Map<String, Object> map : list2) {
String key = map.get("key").toString();
if (!mergedMap.containsKey(key)) {
mergedMap.put(key, new ArrayList<Map<String, Object>>());
}
mergedMap.get(key).add(map);
}
// 输出合并后的结果
for (Map.Entry<String, List<Map<String, Object>>> entry : mergedMap.entrySet()) {
String key = entry.getKey();
List<Map<String, Object>> valueList = entry.getValue();
System.out.println("Key: " + key);
for (Map<String, Object> value : valueList) {
for (Map.Entry<String, Object> valueEntry : value.entrySet()) {
String valueKey = valueEntry.getKey();
Object valueValue = valueEntry.getValue();
if (!valueKey.equals("key")) {
System.out.println(valueKey + ": " + valueValue);
}
}
}
}
}
}
```
这段代码中,我们使用了两个 List<Map<String, Object>> 分别表示两个列表,其中每个 Map 表示一个元素,其中 key 表示该元素对应的 key,其他属性则用 key-value 的形式存储。我们使用了一个 Map<String, List<Map<String, Object>>> 来存储合并后的结果,其中 key 表示每个元素的 key 值,value 则表示这个 key 值对应的所有元素。最后我们遍历这个 Map,输出合并后的结果。