- - PR -
2次元リストの比較がうまくいきません。
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-07-01 18:21
例えば、2次元リストのArrayList A, ArrayList Bがあります。
ArrayList A, ArrayList Bはそれぞれ、エレメントとして、ArrayListを複数持っています。 うまくいかないのは、ArrayList A, ArrayList Bのエレメント同士(ArrayList)を比較してtrueかfalseを結果として返したいのですが、ArrayList A, ArrayList Bに全く同じ値をセットしても常にfalseしか結果として返しません。 うまく比較を行う方法をご存知の方がおられましたらお手数では、御座いますがご教授して頂けますと幸いです。Javaをやり始めて浅いもので、レベルの低い質問ですいません。 |
|
投稿日時: 2004-07-01 18:30
「どのように比較したら」うまくいかないのか、そもそも二つのArrayListがどうだったら
同じと判定したいのか、を明確にしてください。 |
|
投稿日時: 2004-07-01 18:43
早速のご返答有難う御座いました。
@ArrayList A, ArrayList Bから、getメソッドで、それぞれの1つ目のエレメント(ArrayList)を取得しました。ここでは、tmp1、tmp2とします。 A比較方法は、equalsメソッド、==、の両方で比較しました。 boolean ans = tmp1.equals(tmp2); boolean ans = tmp1 == tmp2; ※tmp1,tmp2のArrayListの中身(エレメント←これは、ArrayListではない)が、同じであればtrueを返したいと考えております。うまく説明ができませんですいません。 |
|
投稿日時: 2004-07-01 18:48
1.tmp1,tmp2の中身のオブジェクトは、equals で比較してtrueを返すことを確認されましたか?
2.listのequalsは、「順番まで含めて完全に一致してる場合」にtrueを返しますが、そこまで完全に一致していますか? |
|
投稿日時: 2004-07-01 18:59
とりあえず、
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/AbstractList.html#equals(java.lang.Object) をよーく読んでください。 |
|
投稿日時: 2004-07-01 19:01
同等性(同じ参照なのか)を見たいのですか、同値性(参照は違うかもしれないが、同じ値なのか)を見たいのですか?
同等性なら == 演算子で比較します。 同値性なら一つずつ、フィールドを比較するか、またはEqualsをオーバーライドします。 フィールドも何かの参照なら、Equalsなどで同等性をチェックする必要があります。 もしくは、ソート目的なら、Comparatorを作成するか、要素にComparableを実装させます。 ちなみに、Equalsの実装は思った以上に奥が深いです。 実装する前に一度、Effective Java(書籍)を一読することをお勧めします。 |
1
