首页 > 解决方案 > 在java中合并2个对象列表

问题描述

我有两个列表listAlistB对象类型

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()会很耗时。有没有更好的方法?

标签: listarraylistdata-structuresmergetobjectlist

解决方案


将它们转换为 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);


推荐阅读