Map遍歷的方法

2021-07-05 19:44:47 字數 1351 閱讀 8546

一.遍歷方法

1.只遍歷value

for (string value : map.values())

2.keyset遍歷key和value

for (string key : map.keyset())

3.entryset使用iterator遍歷key和value

iterator> it = map.entryset().iterator();  

while (it.hasnext())

4.entryset遍歷key和value

(推薦,尤其是容量大時,treemap尤其推薦

for (map.entryentry : map.entryset())

二.遍歷效率

1. 對於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方法。

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方法。

以上結論**於某大神做過的測試:

Map的遍歷方法

public static void main string args 第二種 system.out.println 通過map.entryset使用iterator遍歷key和value iterator it map.entryset iterator while it.hasnext 第三種 ...

map 遍歷方法

最常規的一種遍歷方法,最常規就是最常用的,雖然不複雜,但很重要,這是我們最熟悉的,就不多說了!public static void work mapmap 利用keyset進行遍歷,它的優點在於可以根據你所想要的key值得到你想要的 values,更具靈活性!public static void w...

Map遍歷方法

在map集合中 values 方法是獲取集合中的所有的值 沒有鍵,沒有對應關係,keyset 將map中所有的鍵存入到set集合中。因為set具備迭代器。所有可以迭代方式取出所有的鍵,再根據get方法。獲取每乙個鍵對應的值。keyset 迭代後只能通過get 取key entryset set en...