• Java中通过List中的stream流去匹配相同的字段去赋值,避免for循环去查询数据库进行赋值操作


    List<EquipmentDeviceMessage> equipmentDeviceMessageInfo = greenThinkTanksInfoPlanMapper.getEquipmentDeviceMessageInfo(phone, startDate, endDate);
    List<BladeUserVo> userList = bladexsqlMapper.getUserList();
    
    • 1
    • 2

    Q:上面两个列表怎么使用流,根据equipmentDeviceMessageInfo中的phone字段去匹配userList 中的phone字段再获取userList 中是name赋值给equipmentDeviceMessageInfo 中的name。
    A:以前的写法是通过for循环遍历一个一个去查询赋值,这样的话如果数据多的话一个一个遍历会查询的话肯定是很慢的,下面的方法是通过List中的stream流去匹配并赋值。

    import java.util.List;
    import java.util.Map;
    import java.util.stream.Collectors;
    
    public class StreamExample {
        public static void main(String[] args) {
            List<EquipmentDeviceMessage> equipmentDeviceMessageInfo = greenThinkTanksInfoPlanMapper.getEquipmentDeviceMessageInfo(phone, startDate, endDate);
            List<BladeUserVo> userList = bladexsqlMapper.getUserList();
    
            // 将userList转换为Map,以phone为键,name为值
            Map<String, String> userMap = userList.stream()
                    .collect(Collectors.toMap(BladeUserVo::getPhone, BladeUserVo::getName));
    
            // 遍历equipmentDeviceMessageInfo,根据phone匹配userMap,将name赋值给equipmentDeviceMessageInfo中的name字段
            equipmentDeviceMessageInfo.forEach(equipment -> {
                String phone = equipment.getPhone();
                if (userMap.containsKey(phone)) {
                    equipment.setName(userMap.get(phone));
                }
            });
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    首先使用流将userList转换为一个Map,以phone作为键,name作为值。接着,使用forEach方法遍历equipmentDeviceMessageInfo列表,根据phone匹配userMap,如果找到匹配项,则将对应的name赋值给equipmentDeviceMessageInfo中的name字段。

    通过使用流,可以更加高效地处理大量数据,并且代码更简洁易读。

  • 相关阅读:
    Hadoop集群配置运行
    Multitor:一款带有负载均衡功能的多Tor实例创建工具
    Shader中需要数学知识
    亚马逊国际按关键字搜索商品 API 返回值说明
    Spring Security(3)
    hdfs NameNode和SecondaryNameNode工作机制、FsImage和Edits解析、集群安全模式
    Linux——进程控制
    MacOS罗技鼠标定义的功能键经常失灵
    指针进阶笔试题
    这三款手机视频拼接软件,可以帮你把视频拼出高级感
  • 原文地址:https://blog.csdn.net/weixin_44912902/article/details/133859383