一.遍歷方法
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...