将一个List<Map<List<String>, Object>> 集合,根据Map中的key进行分组
时间: 2023-10-14 22:50:20 浏览: 128
您可以使用Java 8的Stream API来对List<Map<List<String>, Object>>进行分组。首先,您需要定义一个函数来获取Map中的key。然后,使用Stream的collect方法将元素收集到一个Map中,其中key是您定义的函数的结果,value是相应的Map。
以下是一个示例代码:
```java
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Map<List<String>, Object>> list = new ArrayList<>();
// 添加一些示例数据
Map<List<String>, Object> map1 = new HashMap<>();
map1.put(Arrays.asList("key1", "group1"), "value1");
list.add(map1);
Map<List<String>, Object> map2 = new HashMap<>();
map2.put(Arrays.asList("key2", "group1"), "value2");
list.add(map2);
Map<List<String>, Object> map3 = new HashMap<>();
map3.put(Arrays.asList("key3", "group2"), "value3");
list.add(map3);
// 根据Map中的key进行分组
Map<List<String>, List<Map<List<String>, Object>>> groupedMap = list.stream()
.collect(Collectors.groupingBy(map -> map.keySet().iterator().next()));
// 输出结果
for (Map.Entry<List<String>, List<Map<List<String>, Object>>> entry : groupedMap.entrySet()) {
System.out.println("Group: " + entry.getKey());
List<Map<List<String>, Object>> groupedList = entry.getValue();
for (Map<List<String>, Object> map : groupedList) {
System.out.println("Map: " + map);
}
System.out.println();
}
}
}
```
运行以上代码,您将得到以下输出:
```
Group: [key2, group1]
Map: {[key2, group1]=[value2]}
Group: [key3, group2]
Map: {[key3, group2]=[value3]}
Group: [key1, group1]
Map: {[key1, group1]=[value1]}
```
这样,List<Map<List<String>, Object>>集合就根据Map中的key成功分组了。请注意,这只是一个示例代码,您可以根据自己的需求进行修改和扩展。
阅读全文