1. ホーム

[解決済み】ArrayListのcontains()メソッドは、どのようにオブジェクトを評価するのですか?

2022-03-27 18:22:14

質問

オブジェクトを1つ作成し、それを ArrayList . 次にまったく同じコンストラクタ入力で別のオブジェクトを作成した場合、そのオブジェクトは contains() メソッドは、2つのオブジェクトが同じであると評価するのでしょうか?コンストラクタは入力に対して何もおかしなことはしておらず、両方のオブジェクトに格納されている変数も同じだと仮定してください。

ArrayList<Thing> basket = new ArrayList<Thing>();  
Thing thing = new Thing(100);  
basket.add(thing);  
Thing another = new Thing(100);  
basket.contains(another); // true or false?


class Thing {  
    public int value;  

    public Thing (int x) {
        value = x;
    }

    equals (Thing x) {
        if (x.value == value) return true;
        return false;
    }
}

このように class を実装する必要があります。 contains() 戻る true ?

解決方法は?

配列リスト implements リストインターフェース。

を見てみると のJavadocを参照してください。 List contains メソッドを使用していることがわかります。 equals() メソッドを使って、2つのオブジェクトが同じかどうかを評価します。