拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
ソースコードを確認したところ、HashSetのHashにここに記事があると思います。
HashSet
Hash
1. まず要素を追加するプロセスを見てみましょう //HashSet コード
HashSet内部で管理されている map//HashMap コード
map
は Element をハッシュすることがわかります。そのため、Foo(1) を追加すると、このリンクは HashSet に保存するプロセスで必須になります。
Element
Foo(1)
もう一度比較してみましょう//HashSet コード
//HashMap コード
結論HashSetコンテナに挿入するときに要素をハッシュし、コンテナに要素が含まれているかどうかを判断するときに要素をハッシュします。それらを比較するのがハッシュ値です。要素の。
equals メソッドですが、2 階では String の equals メソッドについて説明していることに注意してください。これは、String の equals メソッドが書き換えられているためです。被験者が contains メソッドを通じて一般のオブジェクトを比較したい場合でも、そうする必要があります。どのようなルールを決定するかを String のように書き換えてください
リーリー
これは AbstractCollection の実装です。AbstractList、AbstractSet はすべてこれを親クラスとして使用して実装されます。
AbstractCollection
AbstractList
AbstractSet
ソースコードを確認したところ、
HashSet
のHash
にここに記事があると思います。
リーリー1. まず要素を追加するプロセスを見てみましょう
//HashSet コード
に新しい要素を追加します リーリーHashSet
内部で管理されているmap
//HashMap コード
は
Element
をハッシュすることがわかります。そのため、Foo(1)
を追加すると、このリンクはHashSet
に保存するプロセスで必須になります。
リーリーもう一度比較してみましょう
//HashSet コード
//HashMap コード
リーリー リーリー結論
HashSet
コンテナに挿入するときに要素をハッシュし、コンテナに要素が含まれているかどうかを判断するときに要素をハッシュします。それらを比較するのがハッシュ値です。要素の。equals メソッドですが、2 階では String の equals メソッドについて説明していることに注意してください。これは、String の equals メソッドが書き換えられているためです。被験者が contains メソッドを通じて一般のオブジェクトを比較したい場合でも、そうする必要があります。どのようなルールを決定するかを String のように書き換えてください
リーリー
これは
AbstractCollection
の実装です。AbstractList
、AbstractSet
はすべてこれを親クラスとして使用して実装されます。