合并 java 中的 2 个对象列表
Merge 2 object lists in java
我有两个 listA
和 listB
对象类型的列表
ListA[name=abc, age=34, weight=0, height=0]
从 excel sheet
收集的数据
ListB[name=null, age=0, weight=70, height=6]
从数据库中收集的数据
现在我想将两个列表合并为一个列表
MergedList[name=abc, age=34, weight=70, height=6]
注意:我的对象 class 有超过 15 个属性,所以使用 getProperty()
一个一个地添加每个 属性 将是时间- consuming.is有更好的方法吗?
将它们转换为 Map,其中键是对象的名称(您将元素表示为 name=abc 表明它们是 name/value 对)。
Map<String,MyMysteriousObject> converted = list.stream().collect( Collectors.toMap(MyMysteriousObject::getName, Function.identity() ) );
(将 getName 替换为您用来获取对象名称的函数)
然后合并地图。例如,here 描述了如何合并地图。
同时考虑在整个代码中将 List 替换为 Map。肯定也会在其他地方节省很多工作。
但是如果你又要有一个列表,就List<MyMysteriousObject> resultList = new ArrayList<>(resultMap);
我有两个 listA
和 listB
对象类型的列表
ListA[name=abc, age=34, weight=0, height=0]
从 excel sheet
ListB[name=null, age=0, weight=70, height=6]
从数据库中收集的数据
现在我想将两个列表合并为一个列表
MergedList[name=abc, age=34, weight=70, height=6]
注意:我的对象 class 有超过 15 个属性,所以使用 getProperty()
一个一个地添加每个 属性 将是时间- consuming.is有更好的方法吗?
将它们转换为 Map,其中键是对象的名称(您将元素表示为 name=abc 表明它们是 name/value 对)。
Map<String,MyMysteriousObject> converted = list.stream().collect( Collectors.toMap(MyMysteriousObject::getName, Function.identity() ) );
(将 getName 替换为您用来获取对象名称的函数)
然后合并地图。例如,here 描述了如何合并地图。
同时考虑在整个代码中将 List 替换为 Map。肯定也会在其他地方节省很多工作。
但是如果你又要有一个列表,就List<MyMysteriousObject> resultList = new ArrayList<>(resultMap);