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

两个list中存放相同的对象,一个是页面导入,一个是从数据库查询,外部传入一个集合存放的是对象的属性名称,根据属性名称处理两个list

需求:两个list中存放相同的对象,一个是页面导入,一个是从数据库查询,外部传入一个集合存放的是对象的属性名称.要求根据传入的属性(多个)判断两个list中是否有重复的对象, 如果重复则删除数据库的list, 然后合并两个list.

/*** 处理导入和数据库重复数据* @param list* @param listKey* @return*/
default List<T> processImportAndDatabaseDuplicateData(List<T> list, List<String> listKey) {//  获取数据库中的全部数据List<T> listEntityDatabase = this.list(null);// 如果数据库中的数据与提交数据有重复则删除数据库的数据listEntityDatabase.removeIf(obj2 -> list.stream().anyMatch(obj1 -> compareObjectsByProperties(obj1, obj2, listKey)));list.addAll(listEntityDatabase);return list;
}default boolean compareObjectsByProperties(T n, T o, List<String> mappingTableKeys) {return mappingTableKeys.stream().allMatch(propertyName -> {Object value1 = getPropertyValue(n, propertyName);Object value2 = getPropertyValue(o, propertyName);return value1 != null && value1.equals(value2);});
}default Object getPropertyValue(T item, String propertyName) {try {return item.getClass().getDeclaredMethod("get" + capitalize(propertyName)).invoke(item);} catch (Exception e) {e.printStackTrace();}return null;
}default String capitalize(String str) {if (str == null || str.isEmpty()) {return str;}return Character.toUpperCase(str.charAt(0)) + str.substring(1);
}
http://www.lryc.cn/news/206850.html

相关文章:

  • 为什么C++能搜到的框架介绍都好抽象?
  • 人工智能(6):机器学习基础环境安装与使用
  • 电力巡检/电力抢修行业解决方案:AI+视频技术助力解决巡检监管难题
  • 区块链轻节点的问答
  • 常用Web安全扫描工具汇整
  • 查看当前cmake版本支持哪些版本的Visual Studio
  • 岩土工程桥梁监测中智能振弦传感器的应用方案
  • 上云容灾如何实现碳中和-万博智云受邀参加1024程序员节数据技术论坛并发表演讲
  • 蓝桥杯每日一题2023.10.26
  • [已解决]安装的明明是pytorch-gpu,但是condalist却显示cpu版本,而且torch.cuda.is_available 也是flase
  • [数据分析与可视化] 基于Python绘制简单动图
  • MySQL基础入门教程(InsCode AI 创作助手)
  • 【Linux】 rpm安装包保存到本地并批量安装
  • 数据分析案例-某公司员工数据信息可视化(文末送书)
  • 浅谈wheel滚轮事件
  • FTP服务器操作手册
  • Android使用Glide类加载服务器中的图片
  • 【打靶】vulhub打靶复现系列3---Chronos
  • 基于Java的新闻发布管理系统设计与实现(源码+lw+部署文档+讲解等)
  • ​CRM系统如何选型?
  • 山东大学开发可解释深度学习算法 RetroExplainer,4 步识别有机物的逆合成路线
  • 使用antv x6注册vue组件报错,TypeError: Object(...) is not a function (teleport.js:3:23)
  • Python开发利器KeymouseGo,开源的就是香
  • 什么是 Node.js
  • 08-flex布局
  • HTML5和HTML的区别
  • 【Amazon】跨AWS账号级别迁移弹性IP地址操作流程
  • 2023-python pdf转换为PPT代码
  • 学会场景提问,让AI“小助手”为我所用
  • 前端,CSS,背景颜色跟随轮播图片改变而改变(附源码)