Map<String,List<Object>分组
时间: 2023-10-29 11:00:18 浏览: 94
你可以使用Java的Stream API和Collectors类来对Map<String, List<Object>>进行分组操作。下面是一个示例代码:
```java
import java.util.*;
import java.util.stream.Collectors;
public class GroupingExample {
public static void main(String[] args) {
// 创建一个Map<String, List<Object>>对象
Map<String, List<Object>> map = new HashMap<>();
map.put("Group1", Arrays.asList("A", "B", "C"));
map.put("Group2", Arrays.asList(1, 2, 3));
map.put("Group3", Arrays.asList(true, false));
// 对Map进行分组
Map<String, List<Object>> groupedMap = map.entrySet().stream()
.flatMap(entry -> entry.getValue().stream().map(value -> new AbstractMap.SimpleEntry<>(entry.getKey(), value)))
.collect(Collectors.groupingBy(AbstractMap.SimpleEntry::getKey, Collectors.mapping(AbstractMap.SimpleEntry::getValue, Collectors.toList())));
// 打印分组结果
for (Map.Entry<String, List<Object>> entry : groupedMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
```
这个示例代码将会输出以下结果:
```
Group1: [A, B, C]
Group2: [1, 2, 3]
Group3: [true, false]
```
在这个示例中,我们使用`stream()`方法将Map转换为流,然后使用`flatMap()`方法将每个键值对转换为简单条目(SimpleEntry),其中键为分组键,值为列表中的每个元素。最后,我们使用`groupingBy()`方法按照键进行分组,并使用`mapping()`方法将每个简单条目的值提取出来并收集到一个新的列表中。
阅读全文