如何比较数组中的值?

时间:2009-03-31 12:45:38

标签: java arrays

如何比较数组中的值?

我有数组命名列表,其中包含12个元素。我看到索引0中的值是否等于或不等于索引2中的值。

我试过这段代码,但似乎没有用。

if ((list.get(0)==list.get(2) && list.get(1)==list.get(3)) 
{
   System.out.println("equal")
}

3 个答案:

答案 0 :(得分:8)

如果它真的一个数组,你想要:

if (list[0] == list[2] && list[1] == list[3])

请注意,如果数组是引用类型,那么通过引用标识进行比较而不是相等。你可能想要:

if (list[0].equals(list[2])) && list[1].equals(list[3]))

如果任何值为null,那么这将会爆炸。您可能需要帮助方法来处理此问题:

public static objectsEqual(Object o1, Object o2)
{
    if (o1 == o2)
    {
        return true;
    }
    if (o1 == null || o2 == null)
    {
        return false;
    }
    return o1.equals(o2);
}

然后:

if (objectsEqual(list[0], list[2]) && objectsEqual(list[1], list[3]))

如果你真的有一个ArrayList而不是一个数组,那么以上所有内容仍然有效,只是在每个地方使用list.get(x)代替list[x]

答案 1 :(得分:2)

if(list[0] == list[2] && list[1] == list[3]){
    System.out.println("equal");
}

如果它们是字符串:

if(list[0].equals(list[2]) && list[1].equals(list[3])){
    System.out.println("equal");
}

答案 2 :(得分:0)

您正在比较对象引用,而不是对象本身。您需要使用方法调用。所有类都从根equals()类继承Object,因此它可能有效:

if(list.get(0).equals(list.get(2)) && list.get(1).equals(list.get(3)))
{
   System.out.println("equal");
}

This article似乎是其他比较方法的一个很好的总结。

相关问题