件名のように:equals()はベクトルadd()remove()メソッドの動作に影響します。
私は持っていますVector<T> v;
1.再定義または機能しremove()
ない場合、メソッドは正しく機能しますか?equals()
hashCode()
type T
2.再定義または機能しadd()
ない場合、メソッドは正しく機能しますか?equals()
hashCode()
type T
equals()
forをT
定義しない場合はVector.remove
、デフォルトのequals()
実装であるオブジェクトID(==
)を使用します。Vector.add()
を使用しませんequals()
。重複を喜んで追加します。いずれの場合も、Vector
はまったく使用しないhashCode
ため、の実装hashCode
(またはその欠如)はの動作にまったく影響しませんVector
。ただし、equals()
要素タイプを再定義する場合はhashCode()
、他のコレクション構造が正しく機能するように再定義する必要があります。
PSおそらくArrayList
の代わりに使用する必要がありVector
ます。のドキュメントVector
から:
スレッドセーフな実装が必要ない場合は
ArrayList
、の代わりに使用することをお勧めしますVector
。
スレッドセーフな実装が必要な場合でも、通常は独自の同期を提供することをお勧めします。によって提供される単一関数呼び出しの同期Vector
は、通常、間違った粒度で行われます。