是否有任何方法可以创建另一个具有两个arraylists的共同值的arraylist?

时间:2014-04-02 10:11:05

标签: java arraylist compare

也就是说,如果我有下一个:

ArrayList<Integer> array1 = new ArrayList<Integer>();
ArrayList<Integer> array2 = new ArrayList<Integer>();

array1 ==> (1,11,12,13,14,15,16,17,18)
array2 ==> (1,17,18)

是否有任何方法可以使用常用值创建另一个arraylist?

4 个答案:

答案 0 :(得分:8)

使用此ArrayList方法:

ArrayList#retainAll(java.util.Collection)

所以,把它放在你的代码中。

 array1.retainAll(array2 );

实施例==&GT;

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

        first_list.add(10);
        first_list.add(20);
        first_list.add(30);

        List<Integer> second_list = new ArrayList<Integer>();
        second_list.add(40);
        second_list.add(20);
        second_list.add(30);

       List<Integer> third_list = new ArrayList<Integer>(second_list);
third_list.retainAll(first_list);

        for (int i = 0; i < third_list.size(); i++) {
            System.out.println("===>" + third_list.get(i));
        }

最后我们可以看到,third_list只有列表first_list和second_list之间的公共元素。

答案 1 :(得分:1)

只需迭代一个列表并检查另一个列表中是否存在值

ArrayList<Integer> common = new ArrayList<Integer>();
for(int i: array1){
  if(array2.contains(i)){
     common.add(i);
  } 
}

答案 2 :(得分:1)

试试这个,

ArrayList<Integer> result = new ArrayList<Integer>();
for (Integer value : array1)
{
   if (array2.contains(value))
    {
       result.add(value);
     }
}

答案 3 :(得分:0)

您可以使用apache commons库并使用ListUtils.intersection(list1,list2)方法。