如何比较数组中的值?
我有数组命名列表,其中包含12个元素.我看到索引0中的值是否等于索引2中的值.
我试过这个代码,但似乎没有用.
if ((list.get(0)==list.get(2) && list.get(1)==list.get(3)) { System.out.println("equal") }
Jon Skeet.. 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]
在每个地方.
如果它真的是一个数组,你想要:
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]
在每个地方.