0

我正在努力做到这一点,如果一个数组等于另一个数组,那么做一些事情。

像这样的东西:

ArrayList<String> array = new ArrayList<String>();
gridArray.add(string1);
gridArray.add(string2);
gridArray.add(string3);
gridArray.add(string4);

if (array == {a,b,c,d}) {
....
}
if (array == {e,f,g,h}) {
....
}

string1 等都是变量,因此每次运行这段代码时都会有所不同。我想要实现的主要目标是不必将 a、b、c、d 等单独添加到数组中(例如“数组”),因为我将有很多具有不同 a 值的 if 语句, b,c,d 以及比 a,b,c,d 更多的值。

4

3 回答 3

3

如果您不想创建数组,这将更加冗长。简单的方法是:

if (array.equals(Arrays.asList(a, b, c, d)) {}

如果您的数组列表恰好包含 a、b、c 和 d(以相同的顺序),这将返回 true :

如果两个列表以相同的顺序包含相同的元素,则它们被定义为相等。

如果您不关心订单,您也可以使用containsAll,但这需要额外的步骤:

List<String> target = Arrays.asList(a, b, c, d);
if (array.containsAll(target) && array.size() == target.size()) {}
于 2012-10-29T16:39:44.027 回答
0

Arrays有你可以使用的静态equals()方法:

String[] array = {"a", "b", "c", "d"};
if (Arrays.equals(array, new String[]{"a","b","c","d"})) {
    System.out.println("Equal!");
}
于 2012-10-29T16:39:23.967 回答
0

或者您可以使用Apache Common 的 ArrayUtils比较功能:

 isEquals

public static boolean isEquals(java.lang.Object array1,
                               java.lang.Object array2)

    Compares two arrays, using equals(), handling multi-dimensional arrays correctly.
于 2012-10-29T16:42:38.783 回答