使用List转Map

背景:

在项目中需要使用List集合与另一个List集合进行属性比较,存在符合条件的Bean,便对Bean进行操作,然后返回.

问题:

List集合与List集合比较,存在时间复杂度较高的问题,循环次数较高

解决思路:

将List转化为Map,以便快速查找对应的Bean

可能存在问题:

List转化Map时,选择的Key有可能出现重复,导致Key的重复冲突问题,并造成某些bean缺失

解决方法:

使用bean的两条或多条属性作为为主键

示例代码:

Map<String, Bean> Map = Service.selectAll().stream()
                .collect(Collectors.toMap(
                        bean -> 
                        bean.getFirstType() + bean.getSecondType(),
                        Function.identity(),
                        (oldValue, newValue) -> oldValue));

第一个参数作为key

第二参数作为Value, 是将本身作为Map的Value

第三个参数,如果出现了键重复的情况,会使用最后一个值作为Map中的值,而前面的值会被覆盖。这个Lambda表达式中,oldValue表示当前键对应的oldValue值,newValue表示当前键对应的newValue值,函数的返回值就是Map中键对应的新值。

最后:

使用Map.get(xxx),便能快速查找对应的Bean

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值