之前我們介紹了Map接口的兩個(gè)實(shí)現(xiàn)類(lèi)HashMap和TreeMap,本節(jié)來(lái)介紹另一個(gè)實(shí)現(xiàn)類(lèi)LinkedHashMap。它是HashMap的子類(lèi),但可以保持元素按插入或訪(fǎng)問(wèn)有序,這與TreeMap按鍵排序不同。
按插入有序容易理解,按訪(fǎng)問(wèn)有序是什么意思呢?這兩個(gè)有序有什么用呢??jī)?nèi)部是怎么實(shí)現(xiàn)的呢?本節(jié)就來(lái)探討這些問(wèn)題。從用法開(kāi)始。
用法
基本概念
LinkedHashMap是HashMap的子類(lèi),但內(nèi)部還有一個(gè)雙向鏈表維護(hù)鍵值對(duì)的順序,每個(gè)鍵值對(duì)既位于哈希表中,也位于這個(gè)雙向鏈表中。
LinkedHashMap支持兩種順序,一種是插入順序,另外一種是訪(fǎng)問(wèn)順序。
插入順序容易理解,先添加的在前面,后添加的在后面,修改操作不影響順序。
訪(fǎng)問(wèn)順序是什么意思呢?所謂訪(fǎng)問(wèn)是指get/put操作,對(duì)一個(gè)鍵執(zhí)行g(shù)et/put操作后,其對(duì)應(yīng)的鍵值對(duì)會(huì)移到鏈表末尾,所以,最末尾的是最近訪(fǎng)問(wèn)的,最開(kāi)始的最久沒(méi)被訪(fǎng)問(wèn)的,這種順序就是訪(fǎng)問(wèn)順序。
LinkedHashMap有五個(gè)構(gòu)造方法,其中四個(gè)都是按插入順序,如下所示:
public LinkedHashMap() public<