1つの記事でArrayList、LinkedList、HashMap、HashSetを取得-----ソースコード解釈のHashMap

ArrayList、LinkedList、HashMap、HashSetを取得する1つの記事----- ArrayListのソースコードの解釈による
ArrayList、LinkedList、HashMap、HashSetの
取得----- LinkedListのソースコードによる解釈によるArrayList、LinkedList、HashMap、HashSetの取得----- ArrayList、LinkedList、HashMap、HashSetを取得するためのHashMap
記事のソースコード解釈----- HashSetのソースコード解釈

HashMapのソースコードは次のように定義
れています。CloneableおよびSerializableインターフェース、以前のArrayListソースコードの解釈で説明されています。

public class HashMap<K,V> extends AbstractMap<K,V>
    implements Map<K,V>, Cloneable, Serializable 

HashMap AbstractMapMapインターフェースを継承して実装します


HashMapには多くのコンテンツがあり、ソースコードをより適切に解釈するのに便利です。まず、HashMapの内部構造が簡略化されています。
覚えやすい、HashMapのコメントと簡略化に関する他の記事を読んでください

記事の転送== " HashMapを簡略化する

在JDK1.2源码的数据结构

jdk1.2のHashMapの最下層は链表+数组
、次のような実際のデータストレージの構造です。

private transient Entry table[];//数组

private static class Entry implements Map.Entry {
    
    
	int hash;		// key的hash值
	Object key;		// 键
	Object value;	// 值
	Entry next;		// 下一个节点

	Entry(int hash, Object key, Object value, Entry next) {
    
    
	    this.hash = hash;
	    this.key = key;
	    this.value = value;
	    this.next = next;
	}
}

初期のHashMapは、リンクリスト構造を使用して同じインデックス値とハッシュの競合を解決し、同じインデックスで値の異なるデータを保存していました。リンクリスト+配列として設計された理由は、データをよりコンパクトに保存し、メモリスペースを節約し、拡張を容易にするためです。

putメソッドの論理フローチャート

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_41813208/article/details/107651659