java stream 对list类有a,b date元素 date是时间 分组 map<a,map<c,List<b>>> c取最新值
时间: 2024-03-04 19:48:11 浏览: 148
java 中List按照date排序的实现
您好,根据您的问题描述,可以使用Java 8中的Stream API来对List进行分组,并使用Map进行嵌套映射,代码示例如下:
```java
List<MyClass> list = new ArrayList<>();
// 假设MyClass类中包含属性a,b,c,date
Map<String, Map<String, List<MyClass>>> result = list.stream()
.sorted(Comparator.comparing(MyClass::getDate).reversed()) // 以日期倒序排序
.collect(Collectors.groupingBy(MyClass::getA, // 先按a分组
Collectors.groupingBy(MyClass::getC, // 在按c分组
Collectors.toList()))); // 最后将b装入List中
```
此时,result就是一个Map类型,其中key是a的值,value是另一个Map类型,其中key是c的值,value是List<MyClass>类型,表示分组后每个a和c对应的b的列表。需要注意的是,在分组之前需要先将List中的元素按照日期倒序排序,才能保证取到最新值。
阅读全文