map
介面的雜湊表和鏈結列表實現,具有可預知的迭代順序。此實現與
hashmap
的不同之處在於,後者維護著乙個執行於所有條目的雙重鏈結列表。此鏈結列表定義了迭代順序,該迭代順序通常就是將鍵插入到對映中的順序(
插入順序
)。注意,如果在對映中
重新插入
鍵,則插入順序不受影響。(如果在呼叫
m.put(k, v)
前 m.containskey(k)
返回了
true
,則呼叫時會將鍵
k重新插入到對映
m中。)
提供特殊的
構造方法
來建立鏈結雜湊對映,該雜湊對映的迭代順序就是最後訪問其條目的順序,從近期訪問最少到近期訪問最多的順序(
訪問順序
)。這種對映很適合構建 lru 快取。
由於增加了維護鏈結列表的開支,其效能很可能比
hashmap
稍遜一籌,不過這一點例外:
linkedhashmap
的 collection 檢視迭代所需時間與對映的
大小成比例。
hashmap
迭代時間很可能開支較大,因為它所需要的時間與其
容量成比例。
鏈結的雜湊對映具有兩個影響其效能的引數:
初始容量
和載入因子
。它們的定義與
hashmap
極其相似。要注意,為初始容量選擇非常高的值對此類的影響比對
hashmap
要小,因為此類的迭代時間不受容量的影響。
此實現不是同步的。
map m = collections.synchronizedmap(new linkedhashmap(...));在按插入順序鏈結的雜湊對映中,僅更改與對映中已包含鍵關聯的值不是結構修改。
在按訪問順序鏈結的雜湊對映中,僅利用 get 查詢對映不是結構修改。
public class linkedhashmap
extends hashmap
implements map
繼承hashmap類,實現map介面。
public linkedhashmap()
由構造方法可知,其呼叫父類構造方法。
void init()
初始化鍊錶結構
public boolean containsvalue(object value) else
return false;
}
通過鍊錶的形式來訪問,是否包含某個元素。
public void clear()
呼叫父類的clear方法,同時修改鍊錶結構。 azkaban web server原始碼解析
azkaban主要用於hadoop相關job任務的排程,但也可以應用任何需要排程管理的任務,可以完全代替crontab。azkaban主要分為web server 任務上傳,管理,排程 executor server 接受web server的排程指令,進行任務執行 1.資料表 projects 工...
JDK LinkedHashMap原始碼解析
今天來分析一下jdk linkedhashmap的源 public class linkedhashmapextends hashmapimplements map可以看到,linkedhashmap繼承自hashmap,並且也實現了map介面,所以linkedhashmap沿用了hashmap的大...
Redux原始碼createStore解讀常用方法
const store createstore reducer,preloadedstate enhancer 直接返回當前currentstate,獲取state值,return state 我覺得應該深轉殖乙個新的物件返回,不然有可能會被外部修改 function getstate consol...