-1

可能重复:
如何比较两个数组列表?

我有两个不同大小的字符串数组列表。我需要编写一个返回 true 的方法,如果列表 A(较大的列表)包含列表 B(较小的列表)的每个值。我将如何编写这样的方法?谢谢!

4

4 回答 4

3

看看List.containsAll()

有时只需看一眼文档(即使是家庭作业;])。

于 2012-05-20T06:03:53.327 回答
2

听起来您应该使用集合而不是列表。对列表执行此操作将是O(N^2),而分别对 HashSetO(N)O(NlogN)TreeSet 执行此操作。

但是,如果性能不是主要问题(即列表相对较小,或者您不经常执行操作),那么只需containsAll在适当的列表对象上使用该方法。

于 2012-05-20T06:04:11.593 回答
0
            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():)

于 2012-05-20T06:06:28.147 回答
0

可能有一种更有效的方法,但是您可以做的是循环遍历大列表,并且对于大列表中的每个元素,循环遍历小列表。找到了就早点跳出小列表,没找到就返回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;
于 2012-05-20T06:08:03.450 回答