当前位置: 首页 > news >正文

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

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

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));}});}
}

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

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

http://www.lryc.cn/news/194739.html

相关文章:

  • 开源酒店预订订房小程序源码系统+多元商户 前端+后端完整搭建教程 可二次开发
  • Leetcode 2906. Construct Product Matrix
  • 【Leetcode Sheet】Weekly Practice 11
  • 本地PHP搭建简单Imagewheel私人云图床,在外远程访问
  • Python图像处理进阶:Pillow库的中级应用
  • 多线程怎么共用一个事务
  • scrollIntoView使用与属性详解
  • 【LeetCode热题100】--169.多数元素
  • LeetCode 面试题 10.01. 合并排序的数组
  • 揭秘OLED透明拼接屏的参数规格:分辨率、亮度与透明度全解析
  • 竞赛选题 深度学习YOLOv5车辆颜色识别检测 - python opencv
  • linux U盘无法使用,提示“Partition table entries are not in disk order“
  • HDLbits: Fsm ps2
  • 【设计模式】八、桥接模式
  • 从零开始的stable diffusion
  • 【Qt之QString】数值与进制字符串间的转换详解
  • Pytest单元测试框架 —— Pytest+Allure+Jenkins的应用
  • 科普向丨语音芯片烧录工艺的要求
  • : 依赖: qtbase5-dev (= 5.12.8+dfsg-0ubuntu2.1) 但是它将不会被安装 或
  • Unity中Camera类实现坐标系转换的示例
  • vue-按键修饰符
  • [初始java]——java为什么这么火,java如何实现跨平台、什么是JDK/JRE/JVM
  • R语言手动绘制NHANSE数据基线表并聊聊NHANSE数据制作亚组交互效应表的问题(P for interaction)
  • C++引用(起别名)
  • Ubuntu:VS Code IDE安装ESP-IDF【保姆级】(草稿)
  • 子序列(All in All, UVa 10340)rust解法
  • AI时代,当项目经理遇到ChatGPT,插上腾飞的翅膀!
  • Springboot项目中加载Groovy脚本并调用其内部方代码实现
  • 为什么要做数据可视化
  • 0基础学习VR全景平台篇 第108篇:全景图细节处理(下,航拍)