1、Node

咱們知道,在各種查找方式中,哈希查找的時間複雜度是最小的O(1),由於這種方式並不須要遍歷,而是直接計算出數據存儲的位置,固然在hashmap中依然繼承了這種優勢。可是,在hashmap中node的使用也提高了存取速度。
這是源代碼中對table數組的定義。node

transient Node<K,V>[] table;

咱們發現,table是一個Node類型的數組,而Node實現了Map的Entry接口,也就是說,它將一條記錄和他的關鍵字綁定在了一塊兒,咱們能夠經過一個node對象直接獲取一對鍵值對的鍵和值,而不須要逐個遍歷對比來查找他的值圖片描述數組

static class Node<K,V> implements Map.Entry<K,V> {
    final int hash;   //該鍵值對的哈希值
    final K key;     //鍵
    V value;        //值
    Node<K,V> next; //指向下一對鍵值對,實現鏈式
    Node(int hash, K key, V value, Node<K,V> next) {
        this.hash = hash;
        this.key = key;
        this.value = value;
        this.next = next;
    }
    public final K getKey()        { return key; }
    public final V getValue()      { return value; }
    public final String toString() {… }
    public final int hashCode() {…}
    public final V setValue(V newValue) {… }
    public final boolean equals(Object o) {…}
}
相關文章
相關標籤/搜索