如何比较数组中的值?
我有数组命名列表,其中包含12个元素。我看到索引0中的值是否等于或不等于索引2中的值。
我试过这段代码,但似乎没有用。
if ((list.get(0)==list.get(2) && list.get(1)==list.get(3))
{
System.out.println("equal")
}
答案 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似乎是其他比较方法的一个很好的总结。