Java 从另外两个arrayList创建arrayList,并仅保留两个arrayList中相同的值
我有两个Java 从另外两个arrayList创建arrayList,并仅保留两个arrayList中相同的值,java,arraylist,Java,Arraylist,我有两个arrayList,它们可以包含0个或多个int,我需要从这两个列表中创建一个新的arrayList。在这种情况下,[4,23] 示例 arrayList1 [3 ,4 ,7,23,12] arrayList2 [13,4,17,23,15] 在这个例子中,我需要一个新的arrayList包含[4,23] 有没有一种简单的方法可以使用.contains()或类似的方法来实现这一点。还是我应该 循环浏览列表并检查是否相等,然后创建新列表 知道其中一个arrayList可以为空 谢谢您只需
arrayList
,它们可以包含0个或多个int
,我需要从这两个列表中创建一个新的arrayList
。在这种情况下,[4,23]
示例
arrayList1 [3 ,4 ,7,23,12]
arrayList2 [13,4,17,23,15]
在这个例子中,我需要一个新的arrayList
包含[4,23]
有没有一种简单的方法可以使用.contains()
或类似的方法来实现这一点。还是我应该
循环浏览列表并检查是否相等,然后创建新列表
知道其中一个arrayList
可以为空
谢谢您只需使用:
或者如果您不想修改列表1
:
List<Integer> intersection = new ArrayList<>(list1);
intersection.retainAll(list2);
列表交叉点=新的ArrayList(列表1);
交叉口。保留(列表2);
您只需使用:
或者如果您不想修改列表1
:
List<Integer> intersection = new ArrayList<>(list1);
intersection.retainAll(list2);
列表交叉点=新的ArrayList(列表1);
交叉口。保留(列表2);
使用集合时效率更高,但即使仅使用列表,使用起来也很简单:
如果你在逻辑上讨论的话,你应该强烈地考虑使用SET。
这对集合来说是更有效率的,但是即使只是使用列表,使用起来也很简单:
如果你在逻辑上谈论这一点,你应该强烈地考虑使用集合。< /P>检查<代码> java .UTL。SET//C>界面,我想这就是你要找的。是的,谢谢你检查<代码> java。UTIL.SET/<代码>界面,我想这就是你要找的。是的,谢谢。这正是我要找的。我想我会在这个问题上投反对票。。。谢谢完美,这正是我想要的。我想我会在这个问题上投反对票。。。谢谢你我给了@Jon一个被接受的答案,因为他给了我一些考虑使用集合更有效的建议,但是如果我能接受这两个,我也会接受你的。多谢各位+1@Lorenzo没问题。很高兴在任何情况下我都能帮忙!:-)我对@Jon给出了公认的答案,因为他给了我一些考虑使用集合更有效的建议,但如果我能同时接受这两个,我也会接受你的建议。多谢各位+1@Lorenzo没问题。很高兴在任何情况下我都能帮忙!:-)
// Start by copying arrayList1
List<Integer> result = new ArrayList<Integer>(arrayList1);
result.retainAll(arrayList2);
arrayList1.retainAll(arrayList2);