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 實現所使用的標記介面,用來表明其支援快速 通常是固 定時間 隨機訪問。此介面的主要目的是允許一般的演算法更改...