可能重复:
如何比较两个数组列表?
我有两个不同大小的字符串数组列表。我需要编写一个返回 true 的方法,如果列表 A(较大的列表)包含列表 B(较小的列表)的每个值。我将如何编写这样的方法?谢谢!
可能重复:
如何比较两个数组列表?
我有两个不同大小的字符串数组列表。我需要编写一个返回 true 的方法,如果列表 A(较大的列表)包含列表 B(较小的列表)的每个值。我将如何编写这样的方法?谢谢!
有时只需看一眼文档(即使是家庭作业;])。
听起来您应该使用集合而不是列表。对列表执行此操作将是O(N^2)
,而分别对 HashSetO(N)
或O(NlogN)
TreeSet 执行此操作。
但是,如果性能不是主要问题(即列表相对较小,或者您不经常执行操作),那么只需containsAll
在适当的列表对象上使用该方法。
public boolean containsAll(List<String> listA, List<String> listB) {
Set<String> listAAsSet = new HashSet<String>(listA);
for (String string : listB) {
if(listAAsSet.contains(string)==false) {
return false;
}
}
return true;
}
或者你可以使用List.containsAll()
:)
可能有一种更有效的方法,但是您可以做的是循环遍历大列表,并且对于大列表中的每个元素,循环遍历小列表。找到了就早点跳出小列表,没找到就返回false。
bool found = false;
for (string a : listA)
{
found = false;
for (string b : listB)
{
if (b.equals(a))
{
found = true;
break;
}
}
if (!found)
return false;
}
return true;