ホームページ >Java >&#&チュートリアル >ArrayList の「contains()」メソッドはオブジェクトの同等性をどのように評価しますか?

ArrayList の「contains()」メソッドはオブジェクトの同等性をどのように評価しますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-14 00:33:10174ブラウズ

How Does ArrayList's `contains()` Method Evaluate Object Equality?

contains() メソッドでの ArrayList のオブジェクトの評価

ArrayList は、Java で頻繁に使用されるデータ構造です。その重要なメソッドの 1 つである contains() は、リスト内のオブジェクトを検索する機能を提供します。このメソッドが 2 つのオブジェクトが等しいかどうかをどのように判断するかについて、一般的な疑問が生じます。

equals() メソッドの役割

ArrayList には、次の内容を定義する List インターフェイスが組み込まれています。 () 方法。 List インターフェイス仕様に従って、contains() メソッドは、オブジェクトが等しいかどうかを比較するために、equals() メソッドを呼び出します。

デフォルトのquals() 動作

デフォルトでは、 equals() メソッドは、オブジェクトの参照が等しいかどうかを比較します。これは、オブジェクトが同じオブジェクト インスタンスを参照している場合にのみ、オブジェクトが等しいとみなされることを意味します。この動作は、同等性がオブジェクトの属性に基づいている必要があるほとんどのカスタム クラスには適していません。

カスタム クラスの equals() をオーバーライドします

意味的な同等性を達成するにはカスタム クラスの場合は、equals() メソッドをオーバーライドする必要があります。この例では、Thing クラスの value 属性に基づいて比較する equals() の実装を提供しました。

評価例

提供された実装の使用equals() の場合、contains() メソッドを評価しましょう:

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

contains() メソッドは true を返します。オーバーライドされたequals()メソッドは、物と別の両方の値属性を比較し、それらが等しいと判断します。

したがって、contains()メソッドが属性に基づいてオブジェクトを正しく識別できるようにするには、オーバーライドすることが不可欠です。 equals() メソッドを使用して、比較に意味のある実装を提供します。

以上がArrayList の「contains()」メソッドはオブジェクトの同等性をどのように評価しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。