代码之家  ›  专栏  ›  技术社区  ›  Jorn

有没有办法检查两个集合是否包含相同的元素,而不受顺序的影响?

  •  34
  • Jorn  · 技术社区  · 15 年前

    Arrays.equals(a1, a2) ,但忽略元素顺序。我在谷歌的两个收藏中都找不到它(比如 Iterables.elementsEqual() ,但这确实说明了顺序)和JUnit( assertEquals() 显然只是打电话而已 equals() 如果采取这种方法,那将是最好的 Iterable s、 但我也可以简单地服用 Collection s 这种方法当然会考虑集合中的任何重复元素(因此它不能简单地测试 containsAll()

    3 回复  |  直到 15 年前
        1
  •  48
  •   Kerem Baydoğan David Zorychta    8 年前

    ApacheCommons集合 CollectionUtils#isEqualCollection :

    如果给定集合包含具有完全相同基数的完全相同元素,则返回true。

    也就是说,如果a中e的基数等于b中e的基数,则对于a或b中的每个元素e。

    我想这正是你想要的。

        2
  •  29
  •   finnw    13 年前

    谷歌收藏 Guava

    HashMultiset.create(c1).equals(HashMultiset.create(c2));
    

    创建临时 Multiset

        3
  •  3
  •   newacct    15 年前

    如果您想忽略顺序,那么测试集合的相等性如何?

    new HashSet(c1).equals(new HashSet(c2))