比较两个arraylist并在第二个中不常见

时间:2013-03-08 06:21:30

标签: java arraylist

我有两个列表

array A = [1,3,5]//jst array A
list B = [3,7]//ArrayList B

我希望列表B中有7个

for(int A=0;A<elements.length;A++){
    for(int r=0;r<B.size();r++){
        if(A[k] != B.get(r)){
              pln(A[k]);
        }
    }
}

4 个答案:

答案 0 :(得分:1)

使外循环遍历列表(B)并检查B的每个元素,如果它是数组的成员。它只是反过来。

// for each element of B ...
for (i = 0; i < B.size(); i++ ) {
  // ... check each element of A
  for (j = 0; j < A.length; j++) {
     // if it is equal.
     if (B.get(i) == A[j]) {
         // if yes, continue with the next B
         break; 
     }
  }
  // so none of the elements of A matched the element of B.
  System.out.println(B.get(i));
}

注意:变量名违反了java约定。我只保留你的名字来帮助你理解答案。请使用以小写字母开头的拼写名称。 Commodore 64 Basic时间结束了

答案 1 :(得分:1)

这应该很快做到:

B.retainAll(Arrays.asList(elements));

假设BListelements是一个数组。

答案 2 :(得分:1)

这是一种方式。不是最干净但有效:

final Integer[] arr1 = new Integer[] { 3, 4, 5 };
final Integer[] arr2 = new Integer[] { 3, 7 };
List<Integer> arr2List = new ArrayList<Integer>(Arrays.asList(arr2));
arr2List.retainAll(Arrays.asList(arr1));
System.out.println(arr2List); // output [3]

答案 3 :(得分:0)

import java.util.ArrayList;

public class test1 {

    public static void main(String[] args) 
    {
        ArrayList<Integer> a1 = new ArrayList(); 
        a1.add(3);
        a1.add(4);
        a1.add(5);
        ArrayList<Integer> a2 = new ArrayList(); 
        a2.add(3);
        a2.add(7);
        a2.retainAll(a1);
        for(Integer i:a2)
        {
            System.out.println(i);
        }
    }

}