2009-03-31 8 views
0

Как сравнить значение в массиве?Как сравнить значение в массиве?

У меня есть список с именем, который содержит 12 элементов. Я вижу, если значение в индексе 0 равно или не равно значению в индексе 2.

Я пробовал этот код, но он, похоже, не работает.

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

«оно не похоже на работу» не является очень хорошим сообщением о проблеме :-) Вы должны дать больше информации - что она делает? Он даже компилируется? Разве это просто не печатает «равный»? Etc и т. Д. – paxdiablo

+0

Имейте в виду, что == отличается от equals (Object) –

ответ

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"); 
} 
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] в каждом месте.

+0

Спасибо Jon. Это действительно помогает. но как если бы вместо поиска равенства я хотел проверить, не являются ли эти элементы равными? могу ли я использовать if (! (objectsEqual (list [0], list [2]) && objectsEqual (список [1], список [3]))) – Jessy

0

Вы сравниваете ссылки на объекты, а не объекты. Вам нужно использовать вызов метода. Все классы наследуют equals() от корневого класса Object, поэтому он может работать:

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

This article, кажется, хорошее резюме других методов сравнения доступных.

Смежные вопросы