两个列表中的常见元素

2022-08-31 08:46:11

我有两个对象,每个对象有三个整数。我想找到一种方法来返回两个列表的公共元素。有没有人知道我如何实现这一目标?ArrayList


答案 1

使用Collection#retainAll()

listA.retainAll(listB);
// listA now contains only the elements which are also contained in listB.

如果要避免 更改受到影响,则需要创建一个新更改。listA

List<Integer> common = new ArrayList<Integer>(listA);
common.retainAll(listB);
// common now contains only the elements which are contained in listA and listB.

答案 2

您可以对对象使用设置交集操作。ArrayList

像这样:

List<Integer> l1 = new ArrayList<Integer>();

l1.add(1);
l1.add(2);
l1.add(3);

List<Integer> l2= new ArrayList<Integer>();
l2.add(4);
l2.add(2);
l2.add(3);

System.out.println("l1 == "+l1);
System.out.println("l2 == "+l2);

List<Integer> l3 = new ArrayList<Integer>(l2);
l3.retainAll(l1);

    System.out.println("l3 == "+l3);

现在,应该只有 和 之间的公共元素。l3l1l2

CONSOLE OUTPUT
l1 == [1, 2, 3]
l2 == [4, 2, 3]
l3 == [2, 3]

推荐