Map介面及其實現類

2021-10-25 02:22:31 字數 1194 閱讀 2202

一、map的實現類

map:雙列資料,儲存key-value對的資料。

實現類:

hashmap:作為map的主要實現類:執行緒不安全的,效率高,可以儲存null的key和value

子類:linkedhashmap:保證在遍歷map元素時,可以按照新增的順序實現遍歷。原因:在原有的hashmap底層結構基礎上,新增了一對指標,指向前乙個和後乙個元素。 對於頻繁的遍歷操作,此類的執行效率高於hashmap

treemap:保證按照新增的key-value進行排序,實現排序遍歷。(按照key排序,key的自然排序和定製排序)底層使用紅黑樹。

hashtable:作為map的古老實現類:執行緒安全,效率低,不能儲存null的key和value

子類:properties:常用來處理配置檔案。key和value都是string型別

hashmap的底層:

陣列+鍊錶(jdk7及之前)

陣列+鍊錶+紅黑樹(jdk8)

二、map結構的理解

三、hashmap的底層實現原理?以jdk7為例:

hashmap map=new hashmap();

在例項化以後,底層建立了乙個長度為16的一維陣列entry table。

…可能已經執行過多次put

map.put(key1,value1)

如果equals()返回false:此時的key1-value1新增成功。>>>情況三

如果equals()返回true:使用value1替換相同key的value值。

補充:

jdk8相較於jdk7在底層實現方面的不同:

new hashmap():底層沒有建立乙個長度為16的陣列

jdk8底層的陣列是node,而非entry

首次呼叫put方法時,底層建立長度為16的陣列

jdk7底層結構只有:陣列+鍊錶。jdk8中底層結構:陣列+鍊錶+紅黑樹。當陣列的某乙個索引位置上的元素以鍊錶形式存在的資料個數大於8,且當前陣列的長度超過64了, 此時此索引位置上的所有資料改為用紅黑樹儲存。

四、linkedhashmap的底層實現原理:

部分原始碼:

static

class

entry

extends

hashmap.node

}

分層學習 BIZ業務實現類介面及其實現

業務邏輯層的主要作用是從檢視層請求中獲取引數,然後將引數傳入相應的dao實現類中,將獲得的引數或者物件集合等判斷跳轉頁面或者傳回資料。主要做法是 1 從相應的檢視中獲取引數 2 通過介面將引數傳遞獲得判斷邏輯或者資料傳遞的物件 1.寫業務邏輯層介面 package cn.mybookshop.biz...

Map介面的實現類

雜湊表就是一種以鍵 值 key indexed 儲存資料的結構,只要輸入待查詢的值即 key,即可查詢到其對應的值。雜湊的思路很簡單,如果所有的鍵 hashcode 都是整數,那麼就可以使用乙個簡單陣列來實現 將鍵作為索引,值即為其對應的值,這樣就可以快速訪問任意鍵的值。簡單的計算方法 hashco...

Map介面及其子類

map介面操作的是一對物件,即二元偶物件,map介面中的每個元素都使用 key value 的形式儲存在集合中.sortedmap介面是排序介面,只要是實現了此介面的子類,都屬於排序的子類.treemap就是此介面的乙個子類 hashmap 無序存放,新的操作類,key不允許重複 hahtable ...