我有两个arrayList
可以包含0或多个 int
,我需要从这两个arrayList
中创建一个新的[4,23]
。 。在这种情况下arrayList1 [3 ,4 ,7,23,12]
arrayList2 [13,4,17,23,15]
示例
arrayList
在此示例中,我需要一个包含[4,23]
.contains()
使用arrayList
或类似的方法有一种简单的方法吗?或者我应该
循环遍历两个列表并检查是否相等并创建新列表?
知道一个或另一个{{1}}可以为空。
谢谢
答案 0 :(得分:2)
您只需使用retainAll
:
list1.retainAll(list2);
或者如果您不想修改list1
:
List<Integer> intersection = new ArrayList<>(list1);
intersection.retainAll(list2);
答案 1 :(得分:2)
使用集合会更有效,但即使只是使用列表,使用retainAll
也很简单:
// Start by copying arrayList1
List<Integer> result = new ArrayList<Integer>(arrayList1);
result.retainAll(arrayList2);
假设您不想要修改arrayList1
。如果您不介意,可以跳过第一步:
arrayList1.retainAll(arrayList2);
你应该强烈考虑使用套装,如果那是你在逻辑谈论的内容。