2012-03-28 17 views
0

2つの真偽を返すブールメソッドを取得しようとしています。arrayListsは互いに等しいです。 arraysListsarrayarray1です。ユーザが入力する。今ここで私は仕事だろうと思ったのコードです:Javaでbooleanメソッドを使用して、1つのArrayListを別のArrayListと比較する

public boolean equals(){ 
//if both are equal return true, else false 
boolean test = false; 
for(int i = 0; i < array1.size() && !test; i++){ 
    if(array1.get(i) == (array.get(i))){ 
     test = true; 
    }  
} 
return test; 
    } 

も除くすべてのarrayLists番号が他のarrayLists番号と一致する場合、それはfalseを返します。

+2

btwの場合、array1.equals(array)を試してみてください。 – ControlAltDel

+0

配列に異なる番号がある場合、なぜそれがtrueを返しますか?インデックスが異なっても同じ数がある場合は、2つのArrayListが等しいかどうかを検討しようとしていますか? –

答えて

1

equalsメソッドを上書きする必要はありません。必要なものだけをリストに用意しています。

あなた自身で書くことを主張する場合は、コードに単純なエラーがあります。 testがfalseになるように初期化するため、 "& &!test"は、ループが最初に存在するようにします。

正しいバージョンは次のようになります。

public boolean equals(){ 
if(array.size()!=array1.size) return false; // test for different length 
for(int i = 0; i < array1.size(); i++){ 
    if(!array1.get(i).equals(array.get(i))){ 
     return false; 
    }  
} 
return true; 
} 
+0

OPが 'list.equals(otherList)'を使うとは思われません。これは宿題があるからです。 –

+1

それは教師に彼が賢明でAPIを知っていることを示すでしょう: –

+0

それはeclipseのオートコンプリートの使い方を教師に教えてくれるでしょう。 –

0

二重等価(==)は危険です。実際にコード内のオブジェクトを返すので、必ずequals()を使用してください。

+0

==は危険ですが、数値を比較していますので、それは問題ありません。 – Kevin

+0

@Kevin、数値は 'int'ではなく、ArrayListの' Integers'なのではないです。したがって、彼は 'equals()'メソッドを使用する必要があります。そうしないと、正しく動作しません。 –

0

1つの配列だけを反復していると考えてください。何が間違っているのか考えてみてください。また、コントロールステートメントを見てください。

コードの流れに慎重に従えば、間違った理由がすぐに分かります。

0
あなたは、このようにコードを変更する必要があります

public boolean equals(){ 
    if (array1.size() != array.size()) return false; 

    for(int i = 0; i < array1.size(); i++){ 
     if(!array1.get(i).equals(array.get(i))){ 
      return false; 
     }  
    } 

    return true; 
} 

まず第一に、あなたは本当のことtestで開始し、もしfalseを返す必要が

これは、ArrayListsが等しくないことを明確に示しているため、等しくないものが見つかります。あなたは実際には test変数を必要としないので、私はそれを取り出しました。同じでないものが見つかった場合は、falseを返すだけです。あなたが等しくないものが見つからなければ、それは決して偽を返さず、最後に真を返すでしょう。第2に、 equals()メソッドを使用する必要があります。これは、ArrayListsが intプリミティブではなく Integerクラスを使用するため、 ==は同じオブジェクトであるかどうかをチェックします。最後に、異なるサイズの配列の比較を扱うには、サイズが同じでない場合はサイズを比較し、同じサイズでない場合はfalseを返す必要があります。

0

あなたのメソッドを逆にしてください。配列が最初に等しいとします。要素が異なる場合、各反復をチェックする必要があります。要素が異なる場合は、「等しくない」フラグを設定します。疑似コードで

boolean different = false; 
for (each element of array 1) { 
    if (element != element of array 2) different = true 
    break; 
} 
関連する問題