List转为 Map<String, Map<String, ManVo>>

要将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}
	}
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值