【问题标题】:Merge 2 object lists in java在java中合并2个对象列表
【发布时间】:2021-11-13 13:33:09
【问题描述】:

我有两个对象类型的列表 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() 逐个添加每个属性会很耗时。有没有更好的方法?

【问题讨论】:

  • 但是年龄体重和身高等其他属性呢?我的问题是我的对象类有大约 20 个属性,我无法一一分配

标签: list arraylist data-structures merge tobjectlist


【解决方案1】:

将它们转换为一个 Map,其中键是对象的名称(您将元素表示为 name=abc 表明它们是名称/值对)。

Map<String,MyMysteriousObject> converted = list.stream().collect( Collectors.toMap(MyMysteriousObject::getName, Function.identity() ) );

(将 getName 替换为您用来获取对象名称的任何函数)

然后合并地图。例如,here 描述了如何合并地图。

同时,考虑在整个代码中将 List 替换为 Map。肯定也会在其他地方节省大量工作。

但如果您必须再次列出列表,只需List&lt;MyMysteriousObject&gt; resultList = new ArrayList&lt;&gt;(resultMap);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 2012-01-14
    • 2019-02-06
    • 2015-04-04
    相关资源
    最近更新 更多