我有两个ArrayLists A& B,我只是想知道ArrayList A中的元素是否存在于ArrayList B元素中。
我刚试过这个。
if(ArrayListA.contains(ArrayListB))
让我们考虑一下:
如果ArrayListA = {1,2};
,如果ArrayListB = {2};
,则必须返回 false 。
如果ArrayListA = {1,2};
和ArrayListB = {2,1};
必须返回 true 。
但徒劳无功,任何人都可以帮助我吗?
答案 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);
}