比较两个ArrayLists

时间:2012-05-20 06:00:19

标签: java arraylist comparison sorting similarity

  

可能重复:
  How to compare two arraylist?

我有两个不同大小的String ArrayLists。我需要编写一个返回true的方法iff List A(更大的列表)包含List B(更小的列表)的每个值。我该如何编写这样的方法? 谢谢!

4 个答案:

答案 0 :(得分:3)

看看List.containsAll()

有时候只需要查看文档即可(即使是作业;])。

答案 1 :(得分:2)

听起来你应该使用集合而不是列表。在列表上执行此操作将为O(N^2),而对于HashSet或TreeSet,它将分别为O(N)O(NlogN)

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

答案 2 :(得分: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():)

答案 3 :(得分: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;