對java中map學習筆記整理

2021-08-08 01:44:23 字數 1497 閱讀 4955

map作為一種非常好用的常見介面有兩個常見的實現類

hashmap與treemap,以及不是很常出現的linkedhashmap

首先他們之間比較明顯的區別為

linkedhashmap可以記錄新增鍵值的順序,根據輸入的順序輸出

treemap能夠對已經錄入的資料進行排序輸出

但在三者之中hashmap普遍具有最高的速度性

再者對於hashmap與treemap都是執行緒不安全的

這一點要先記好對於以後多執行緒程式的程式設計中具有很大的警示性

最後我來說一下從網上看到的關於map類遍歷的效率上需要注意的地方(適用於資料量比較大的時候)

如果你使用hashmap

同時遍歷key和value時,keyset與entryset方法的效能差異取決於key的具體情況,如複雜度(複雜物件)、離散度、衝突率等。換言之,取決於hashmap查詢value的開銷。entryset一次性取出所有key和value的操作是有效能開銷的,當這個損失小於hashmap查詢value的開銷時,entryset的效能優勢就會體現出來。例如上述對比測試中,當key是最簡單的數值字串時,keyset可能反而會更高效,耗時比entryset少10%。總體來說還是推薦使用entryset。因為當key很簡單時,其效能或許會略低於keyset,但卻是可控的;而隨著key的複雜化,entryset的優勢將會明顯體現出來。當然,我們可以根據實際情況進行選擇

只遍歷key時,keyset方法更為合適,因為entryset將無用的value也給取出來了,浪費了效能和空間。在上述測試結果中,keyset比entryset方法耗時少23%。

只遍歷value時,使用vlaues方法是最佳選擇,entryset會略好於keyset方法。

在不同的遍歷寫法中,推薦使用如下寫法,其效率略高一些:

for (string key : map.keyset())

for (entryentry: map.entryset())

for (string value : map.values())

3.2 如果你使用treemap

同時遍歷key和value時,與hashmap不同,entryset的效能遠遠高於keyset。這是由treemap的查詢效率決定的,也就是說,treemap查詢value的開銷較大,明顯高於entryset一次性取出所有key和value的開銷。因此,遍歷treemap時強烈推薦使用entryset方法。

只遍歷key時,keyset方法更為合適,因為entryset將無用的value也給取出來了,浪費了效能和空間。在上述測試結果中,keyset比entryset方法耗時少24%。

只遍歷value時,使用vlaues方法是最佳選擇,entryset也明顯優於keyset方法。

在不同的遍歷寫法中,推薦使用如下寫法,其效率略高一些:

for (string key : map.keyset())

for (entryentry: map.entryset())

for (string value : map.values())

Java學習筆記整理 Map

集合 collection map 鍵值對 key value對映表 預設 hashmap hashtable concurrenthashmap linkedhashmap sortedmap i treemap 1.hashmap mapmap new hashmap 增刪改查 map.put ...

java中對map使用entrySet迴圈

根據jdk5的新特性,用for迴圈map,例如迴圈map的key 1 2 3 for string datakey paramap.keyset 注意的是,paramap 是怎麼樣定義的,如果是簡單的map paramap new hashmap 那前面的string就只能換成object了.迴圈整...

Java學習筆記整理 流

一.randomaccessfile new randomaccessfile file,rw 常用 int read 讀單位元組 int read byte 返回有效長度,讀的內容放入byte陣列 int read byte,off,len 返回有效長度,讀的內容放入byte陣列off位置開始 v...