番号。
これは、アルゴリズムレベルでは基本的に不可能です。
設計上、ハッシュ操作は全射です。複数の要素が同じ値にハッシュされる場合があります。したがって、HashMapの実装では、ハッシュをヒントとしてのみ使用でき、完全な等式比較を使用して、ヒントによって検出された要素が正しい要素であるかどうかを確認する必要があります。
で最高、get_by_hash
方法は戻ってくるIterator
現在のハッシュと一致するすべての可能な要素のを。
縮退した場合については、常に返されるハッシュアルゴリズムを検討してください4
(公正なサイコロの目で得られます)。どの要素が返されると思いますか?
回避策
場合キャッシングはあなたが後にしているものです、ないと言語のトリックはHashBuilder
、キー自体の内部ハッシュプリハッシュ(およびキャッシュ)です。
(等価性チェックのために)完全なキーをキャッシュする必要がありますが、ハッシュは非常に単純な操作です(キャッシュされた値を返します)。
ただし、値によっては非常にコストがかかる可能性がある等価性チェックは高速化されません。
パターンをRustに適合させることはできますが、を使用する利点は失われますHashBuilder
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加