要将List<ManVo>转换为Map<String, Map<String, ManVo>>,其中外层的键是日期,内层的键是ManVo对象的getMeterId方法返回的值,可以先根据日期对列表进行分组,然后再构造内层的映射。
import java.time.LocalDate; // 或者使用java.util.Date取决于你的日期类型
import java.util.*;
import java.util.stream.Collectors;
// 假设manVOList 是包含ManVo对象的列表
List<ManVo> manVOList = ...;
// 假设ManVo类有一个getDate()方法来获取日期
Map<String, Map<String, ManVo>> result = manVOList.stream()
.collect(Collectors.groupingBy(
manVo-> manVo.getDate().toString(), // 外层按日期分组,这里假设getDate()返回的是LocalDate类型,并转换为字符串
Collectors.toMap(
ManVo::getMId, // 内层按meterId分组
Function.identity(), // 值就是LlTgCustMeterInfo4TgVO对象本身
(existing, replacement) -> existing // 解决潜在的键冲突问题,这里简单地选择第一个遇到的对象
)
));
System.out.println(result);
最终转为的结构如data部分
{"total":568,"data":{
"2024-02-09":{
"648":{"date":"2024-02-09","mId":648,},
"879":{"date":"2024-02-09","mId":879,}
},
"2024-02-10":{
"648":{"date":"2024-02-10","mId":648},
"879":{"date":"2024-02-10","mId":879}
}
}
}

6236

被折叠的 条评论
为什么被折叠?



