1

データ構造クラスの Java 割り当ての 1 つのコンポーネントに行き詰まり、残りの部分を完了できません。これは単純な概念ですが、実装に何かが欠けています。Dynamic array呼び出しがlist1あり、それを別のリスト ( list2) と比較する必要があります。私はメソッドを持っています:equals(Object a)だから呼び出しはlist1.equals(list2);

リストを反復子で比較する方法は知っていますが、list1オブジェクトを参照して 2 つを比較するにはどうすればよいですか?

私はあなたに私の任務を遂行するように頼んでいるわけではありません.これがどのように機能するかを理解するのを手伝ってください.

public static void main(String args[]) 
    {
        DynamicArrayOfInts list1 = new DynamicArrayOfInts();        

    }   
    public DynamicArrayOfInts() 
    {
      storage = new int[INITIAL_CAPACITY]; 
      size = 0;
    }
    public boolean equals(Object aThat) 
    { 
        if(aThat.equals(storage))
            return true;
        else    
            return false;
    } 
4

3 に答える 3

2

次のようにする必要があります。

public boolean equals(Object obj)
{
    if(obj == null) return false;
    if(obj.getClass() != DynamicArrayOfInts.class) return false;

    DynamicArrayOfInts other = (DynamicArrayOfInts) obj;

    /*compare this.storage to other.storage with the iterator
    or with simple indexing.*/
}
于 2012-09-22T17:32:37.207 に答える
1

メソッド内で比較を行うと言っていると思いますequalsaその場合は、引数をリストにキャストする必要があります。そう

public boolean equals(Object a) {
    MyList list1 = (MyList) a; 
    ...
}

この行は、「参照を のインスタンスへMyList list1 = (MyList) aの参照として扱い、それを参照に代入する」という意味です。aMyListlist1

equalsは通常、 を受け取るObjectので、(ほぼ)何でも に渡すことができますequals。特定のケースに応じて、最初にできることは、引数の型をチェックし、equals等しい可能性がない場合は false を返すことです。

インターチューブで見つけたこの例を見てください。彼らの例で最初に目にするのは、

if ( this == aThat ) return true;
if ( !(aThat instanceof Car) ) return false;

このようなことを行うと、比較が簡単な場合にすばやく戻ることができます。たとえば、インスタンスがそれ自体と等しいというのはトートロジーです。真実ではない方法はありません。

于 2012-09-22T17:31:43.967 に答える
1

equals メソッド内では、this演算子を使用して、 nae の代わりに list1 にアクセスしますlist1

于 2012-09-22T17:34:34.253 に答える