java if循环优化_Map优化for循环并消除if判断的实战(java1.8 利用stream流将list转Map)...

背景:从数据库中分别获取两个list集合list,list,两个list通过ID进行关联,现在要用B中的属性b,对A中的属性a进行更新。

反例:正常来说是采用双重for循环,然后if条件判断ID时候相等,进行复制

步骤:

1.将list转为map

2.通过stream进行更新list

代码实现

List lista = new ArrayList();

List listb = new ArrayList();

map listMap = listb.stream().collect(Collectors.toMap(B::getId,B::getb,(value1,value2) -> value1));

lista.stream().foreach(valuea -> valuea.seta(listMap.get(valuea.getId())));

//toMap()的三个参数第一个是转为map的key值,第二个为转为map的value,第三个为如果前面出现了两个ID是一个的情况下,value值选择第一个

这个方式采用了java8中的stream流的方式,大大减少了代码的复杂度,而且采用流式编程能够提高新能

优化:

这个在转化的时候有问题,就是当getb() 获取的方法为空时,这是就会报空指针异常,所以我们一般在业务层面会进行空指针的处理,例如将B::getb换为 b -> StringUtils.isEmpty(b.getb()) ? "" : b.getb().当然这里也有其他的方式,但是一般都是直接业务逻辑进行处理

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值