0

カスタムクラスオブジェクトをHashSetに追加し、それらにhashCode()メソッドを提供しない場合、ハッシュのパフォーマンスにどのように影響しますか?

ありがとう、アジェイ

4

2 に答える 2

2

Nikolausが言及しているように、ストックの実装は高速で、問題なく機能します。equalsメソッドをオーバーライドする場合を除いて、遠慮なく使用してください。たとえば、2つのPersonオブジェクトが同じgetFirstName()とgetLastName()を持っている場合に「等しい」場合、equalsメソッドをオーバーライドしてそれをチェックし、hashCode()をオーバーライドしてそれらの値が同じハッシュを返すようにします。 2つのプロパティは同じです。

于 2010-08-02T18:30:23.990 に答える
1

hashCode独自のメソッドを定義しない場合は、オブジェクトの親クラスのメソッドが呼び出されます。親が定義されていない場合hashCode、Objectクラスのメソッドが呼び出されます。java apiのドキュメントによると、メソッドはオブジェクトのアドレスに応じて整数を返しますが、これがどの程度正確に行われるかは、jvmとオペレーティングシステムによって異なります。

要約すると、hashCodeメソッドを指定しない場合は、オブジェクトをhashTableに配置するようなものです。

于 2010-08-02T18:27:33.403 に答える