通过stream的toMap的功能

  LambdaQueryWrapper<SpotCheck> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.in(SpotCheck::getCheckCode,checkCodes);
            List<SpotCheck> spotChecks = spotCheckMapper.selectList(queryWrapper);
            if (CollUtil.isNotEmpty(spotChecks)){
                Map<String, SpotCheck> spotCheckMap = spotChecks.stream().collect(Collectors.toMap(SpotCheck::getCheckCode, SpotCheck -> SpotCheck));
                exportList = exportList.stream().peek(e->{
                    SpotCheck spotCheck = spotCheckMap.get(e.getCheckCode());
                    if (ObjUtil.isNotEmpty(spotCheck)){
                        BeanUtil.copyProperties(spotCheck,e);
                    }
                }).collect(Collectors.toList());
            }

通过先查询出所有对象,通过java8的stream中tomap方法,把集合对象变为map的key和value对象,key是用唯一的字段,比如id或者code等

下面的集合可以使用stream的peek的遍历,将其map进行匹配,记住需要返回判空。

Map<String, SysUser> userMap = list.stream().collect(Collectors.toMap(SysUser::getUserName, Function.identity()));

也可以用上面这个。

Map<Long, String> collect1 = list.stream().collect(Collectors.toMap(PfmeaTreeVo::getTreeId, PfmeaTreeVo::getText));

如果只是其中一个属性,可以用上面这个。

 

posted @ 2024-07-18 19:53  多多指教~  阅读(99)  评论(0)    收藏  举报