list<Map> stream分组
时间: 2023-09-24 20:04:24 浏览: 102
你可以使用Java 8的Stream API来对List<Map>进行分组操作。首先,你需要使用`Collectors.groupingBy()`方法来指定分组的条件,例如按照Map中的某个键进行分组。然后,你可以将Stream转换为Map,其中键是分组条件,值是分组后的结果。
以下是一个示例代码:
```java
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Map<String, Object>> list = getListOfMaps(); // 假设你有一个List<Map<String, Object>>对象
// 按照Map中的某个键进行分组
Map<Object, List<Map<String, Object>>> groupedMap = list.stream()
.collect(Collectors.groupingBy(map -> map.get("key")));
// 输出分组后的结果
groupedMap.forEach((key, value) -> System.out.println(key + ": " + value));
}
// 获取一个List<Map<String, Object>>对象的示例方法
private static List<Map<String, Object>> getListOfMaps() {
// 示例数据
List<Map<String, Object>> list = List.of(
Map.of("key", "group1", "value", 1),
Map.of("key", "group1", "value", 2),
Map.of("key", "group2", "value", 3),
Map.of("key", "group2", "value", 4),
Map.of("key", "group3", "value", 5)
);
return list;
}
}
```
在上面的示例中,假设你有一个List<Map<String, Object>>对象,其中的Map表示一条记录,你可以按照Map中的某个键(这里示例中的键为"key")进行分组。最后,将分组后的结果存储在一个Map中,其中键是分组条件,值是分组后的记录列表。
你可以根据自己的需求修改示例代码中的键和值的类型。希望这可以帮助到你!如果你有任何进一步的问题,请随时提问。
阅读全文