2009-03-31 6 views
0

配列の値を比較する方法は?配列の値を比較するには?

私は12の要素を含む配列の名前付きリストを持っています。インデックス0の値がインデックス2の値と等しいかどうかを確認します。

私はこのコードを試しましたが、うまくいかないようです。

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

「それが動作しているようですdoesntの」あなたはより多くの細部を与える必要が:-)非常に良い問題報告書ではありません - それは何をするのでしょうか?それはコンパイルされますか?それは単に "等価"を印刷しないのですか?等。 – 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])) 

あなたが本当に上記のすべては、まだちょうどlist.get(x)を使用して、保持して、代わりに、配列のArrayListを持っていればそれぞれの場所にlist[x]の代わりに。

+0

ありがとうございました。それは本当に助けになる。しかし、平等を求めるのではなく、要素が等しくないかどうかをチェックしたいのですが? (objectEqual(list [0]、list [2])&& objectsEqual(list [1]、list [3])))) – Jessy

0

オブジェクト自体ではなく、オブジェクト参照を比較しています。メソッド呼び出しを使用する必要があります。それがうまくいくかもしれないので、すべてのクラスが、ルートObjectクラスからequals()を継承:

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

This articleは、利用可能な他の比較方法の良い要約であるように思われます。