list - 在java中合并2个对象列表
问题描述
我有两个列表listA
和listB
对象类型
ListA[name=abc, age=34, weight=0, height=0]
从excel表格收集的数据
ListB[name=null, age=0, weight=70, height=6]
从数据库收集的数据
现在我想将两个列表合并到一个列表中
MergedList[name=abc, age=34, weight=70, height=6]
注意:我的 obj 类有超过 15 个属性,因此使用一个一个添加每个属性getProperty()
会很耗时。有没有更好的方法?
解决方案
将它们转换为 Map ,其中键是对象的名称(将元素表示为name=abc表明它们是名称/值对)。
Map<String,MyMysteriousObject> converted = list.stream().collect( Collectors.toMap(MyMysteriousObject::getName, Function.identity() ) );
(将getName替换为您用来获取对象名称的任何函数)
然后合并地图。例如,这里描述了如何合并地图。
在此期间,请考虑在整个代码中将 List 替换为 Map。肯定也会在其他地方节省很多工作。
但是,如果您必须再次列出清单,只需List<MyMysteriousObject> resultList = new ArrayList<>(resultMap);
推荐阅读
- reactjs - TypeError:无法读取 React 上未定义的属性“标题”
- postgresql - Postgresql regexp_replace() 反斜杠和双引号
- angularjs - 为什么异常在 $exceptionHandler 函数中没有属性以及如何解决此限制?数据克隆错误
- python - 在 Pandas 中难以读取 .dat 文件
- atom-editor - 尝试安装软件包时输出错误
- swift - 微不足道的 2D 数组锁定了 Xcode 9
- r - 如果某个列是 NA,我如何获取与字符串匹配的第一个非 NA 列
- c# - 当不清楚正在使用什么元素时,人们如何修复“不可交互的元素”Selenium 和 C#?
- ios - First TableView cells are not dequeuing properly
- java - 如何在 recyclerview 中添加 clickablespan textview 以单击它或与特定单词交互,而不是简单的 textview 而是来自 recyclerview 的 textview