【发布时间】:2020-09-21 08:58:35
【问题描述】:
假设我有两个想要合并为一个的列表
合并条件: 与 id 比较
Case 1 :
List 1 = [{id=1,name=null},{id=2,name=null},{id=3,name=c}]
List 2 = [{id=1,name=a},{id=2,name=b}]
合并后应该是[{id=1,name=a},{id=2,name=b},{id=3,name=c}]
Case 1 :
List 1 = [{id=1,name=null}]
List 2 = [{id=1,name=a},{id=2,name=b}]
合并后应该是[{id=1,name=a},{id=2,name=b}]
我的代码:
for (Object ObjofList1: list1) {
List<DummyObject> do = new ArrayLIst();
SomeObject sm = list2.stream()
.filter(list2object -> list2object.getId().equals(ObjofList1.getId()))
.findAny()
.orElse(ObjofList1);
do.add(dealerSalesTempObject);
}
如果list2 有更多元素,它工作正常,但如果list1 有更多元素,那么我们将无法合并,因为迭代较少。
我的问题是我不想看到哪个更短或更长,但最后所有对象都应该在一个列表中..
【问题讨论】:
-
列表 1 是否合并到列表 2 中是否相关,或者是否可以反过来,即您可以将 2 列表 2 中较长的列表合并到较短的列表 1 中吗?您希望合并发生在原地,即对一个列表进行更改,还是想要列表的“合并”副本?
-
我的问题是我不想看到哪个更短或更长,但最后所有对象都应该在一个列表中..
-
请注意,您的代码甚至无法编译,即
do是保留关键字,而dealerSalesTempObject未定义 - 请发布 minimal reproducible example。 -
这能回答你的问题吗? How do I join two lists in Java?
-
另请参阅此相关问题:stackoverflow.com/questions/16520046/…