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 AbstractMap
はMap
インターフェースを継承して実装します
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は、リンクリスト構造を使用して同じインデックス値とハッシュの競合を解決し、同じインデックスで値の異なるデータを保存していました。リンクリスト+配列として設計された理由は、データをよりコンパクトに保存し、メモリスペースを節約し、拡張を容易にするためです。