【发布时间】:2012-08-17 16:13:40
【问题描述】:
可能重复:
Java: Checking equality of arrays (order doesnt matter)
我有两个数组:
String[] a1 = {"a", "b", "c"};
String[] a2 = {"c", "b", "a"};
我需要检查两者是否包含相同的元素(并且长度相同)无论元素的顺序如何。
我尝试了Arrays.equals(a1, a2),但它考虑了元素的顺序。
org.apache.commons.lang.ArrayUtils 不提供这个东西。
我知道我可以通过创建自己的方法来实现相同的目的(检查相同的长度,然后对两个数组进行排序,然后使用Arrays.equals(a1, a2)),但我想知道这个东西是否在任何 API 中提供或者有更聪明的方法做同样的事情。
【问题讨论】:
-
你试过Arrays.sort(a2),然后检查它们是否相等?
-
您可以在调用 Arrays.equals 之前对数组进行排序,但这会很昂贵。
-
一个可能更有效的解决方案是将第一个数组的项添加到哈希集中,然后检查第二个数组的哪些项在哈希集中。