JAVA原始碼分析Collection之Map

2021-07-26 10:46:30 字數 894 閱讀 3407

map的底層實現:linkedlist陣列,乙個非常大的陣列,linkedlist中儲存的是myentry物件(包括key和value屬性的物件),因為要保證map中的查詢速度比較快,是基於雜湊演算法來實現的,雜湊的主要實現是依靠hashcode方法。hashcode的產生是基於,記憶體位址產生的,保證產生的每乙個hashcode都是唯一的,其實這種演算法有點類似於桶排序。就是一種犧牲空間,從而來換取時間的演算法。

myentry類主要是乙個key、value的物件

package com.xl.realizemap;

public class myentry

public void setkey(object key)

public object getvalue()

public void setvalue(object value) }

hashmap類的put和get方法

package com.xl.realizemap;

import com.xl.realizelinkedlist.xllinkedlist;

public class xlmap else

}//如果,新增的元素原來的linkedlist中沒有,則直接新增

list[index].add(myentry);

} }/**

* get(object key)根據key來得到value

*/public object get(object key)

}} return null; }

}

java原始碼分析

在往佇列中插入資料由下面幾個函式,他們的區別就是對佇列滿的情況處理不同 put 一直等待著 offer 無時間 如果空了直接返回false offer 有時間 等待指定的時間,在指定時間內如果空了,那麼插入,負責返回false add 丟擲乙個illegalstateexception異常 首先來看...

《Java原始碼分析》 LinkedHashMap

public class linkedhashmap extends hashmap implements map從結構可以看出,linkedhashmap繼承hashmap並實現了map介面。下面幾個是linkedhashmap的建構函式,每個建構函式都是直接呼叫父類hashmap的建構函式來完成...

Java原始碼分析之ArrayList

自我學習原始碼,也借鑑了網上其他的資料,有寫的不準確的地方,請輕噴,謝謝 1 繼承自abstractlist類 2 實現了randomaccess介面,randomaccess介面是list 實現所使用的標記介面,用來表明其支援快速 通常是固 定時間 隨機訪問。此介面的主要目的是允許一般的演算法更改...