我有两个ArrayList A& B,我想知道数组A中的元素是否存在于数组B元素中

时间:2014-01-28 07:58:28

标签: java arrays arraylist

我有两个ArrayLists A& B,我只是想知道ArrayList A中的元素是否存在于ArrayList B元素中。

我刚试过这个。

if(ArrayListA.contains(ArrayListB))

让我们考虑一下:

如果ArrayListA = {1,2};,如果ArrayListB = {2};,则必须返回 false

如果ArrayListA = {1,2};ArrayListB = {2,1};必须返回 true

但徒劳无功,任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:5)

您正在检查列表A是否包含列表B(作为对象),而不是检查列表A是否包含列表B的所有元素。

请改用containsAll(Collection<?>)方法:

List<String> a = new ArrayList<String>();
List<String> b = new ArrayList<String>();

a.add("a");
a.add("b");
a.add("c");

b.add("a");
b.add("c");

System.out.println("b is a subset of a: " + a.containsAll(b));

System.out.println("a is a subset of b: " + b.containsAll(a));

答案 1 :(得分:1)

试试这个:

for(int i = 0; i< ArrayListB.size(); i++){
      if(ArrayListA.contains(ArrayListB.get(i)){
           System.out.print("Found");
      }
}

答案 2 :(得分:0)

试试这个

if (arrayListB.containsAll(arrayListA))

答案 3 :(得分:0)

我认为将两个ArrayLists转换为Set对象然后使用set操作来确定一个是否是另一个的子集会更容易。这也可以避免两面性:

ArrayList<String> a1 = ...;
ArrayList<String> a2 = ...;

public boolean isSubset(ArrayList<String> a1, ArrayList<String> a2) {

     Set<String> s1 = new HashSet(a1);
     Set<String> s2 = new HashSet(a2);

     return s1.containsAll(s2);
     }
相关问题