ハッシュマップには値の時間計算量が含まれています_終わりはありません! ?何年も経った今でも、インタビューはHashMapに質問しています
Hashmap Containsvalue Time Complexity _ There Is No End
Javaの基本的なインタビューでは、HashMapはすべてのインタビュアーが尋ねなければならない質問のようです。
1. Java7のHashMap
Java 7 HashMapリンクリストのデータは「ヘッド挿入方法」に基づいているため、無限ループやデータ損失が発生する可能性があります
伝達関数
①「ヘッド挿入方式」エンドレスループ
写真のコードを閲覧するには数分かかります
拡張前はこのようになっているとしましょう
拡張後のシングルスレッドを想定すると、次のようになります。
シングルスレッドでも問題ありません
2つのスレッドAとBがあるとします。
スレッドAには次の状況があります
スレッドAがハングし、スレッドBが開始して、サイズ変更操作が完了します。
この時点で、多くのベテランが問題を認識しているはずです。スレッドBk2の次のノードはk1です。中断されたスレッドAは、ハッシュk2を準備します。スレッドBの影響により、再びハッシュk1に戻り、無限ループが発生します。
2. Java8のHashMap
Java 8のHashMapは、無限ループの問題を回避するために「テール補間法」を使用します。
スレッドAとスレッドBの両方が赤いボックス内のコードに対して実行されると、
2つの異なるデータのハッシュ値が同じである場合、
そして、位置はnullです、
データの上書きがあります。
@Python |テキスト