1

次のオブジェクトのコレクションがあります。

Set<MyClass> test = new LinkedHashSet<MyClass>();

とメソッドをオーバーライドしMyClassません。hashcodeequals

MyClass がメソッドhashCodeequalsメソッドをオーバーライドしていなくても、上記のコレクションは一意のオブジェクトのみを持つことができますか?

4

1 に答える 1

6

のデフォルトの実装はequals、同一性をチェックすることです (つまり、==演算子を使用します)。同じオブジェクトを2回追加できないという意味で、あなたのLinkedHashSet(またはその場合は他の)には一意のオブジェクトが含まれます。HashSetただし、まったく同じ方法で 2 つのインスタンスを作成した場合 (たとえば、同じ引数をコンストラクターに渡す)、セットには両方が含まれますequals

于 2015-09-05T15:46:20.597 に答える