android中 map遍歷的四種方式

2021-06-27 09:25:03 字數 1940 閱讀 2525

**:

以下是map遍歷的四種方式:

// 一、推薦只用value的時候用,都懂的。。。  

// map.values()遍歷所有的value,不遍歷key

for (string v : map.values())

// 二、取二次值,先取key再取value,建議只需要用key的時候使用,節省時間、空間  

// keyset遍歷key和value

for (string key : map.keyset())

// 三、取一次值,一次把key和value全部取出  

// entryset使用iterator遍歷key和value

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

while (it.hasnext())

// 四、推薦,尤其是容量大時,treemap尤其推薦  

// entryset遍歷key和value

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

另乙個大牛曾經做過測試,感謝大牛!詳見

在此只把結論貼出,取之用之~:

3. 結論

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

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())

mysql遍歷map中的陣列 遍歷Map的四種方法

public static void main string args map map new hashmap map.put 1 value1 map.put 2 value2 map.put 3 value3 第一種 普遍使用,二次取值 system.out.println 通過map.keys...

Map的四種遍歷

entryset物件實現set介面,內部儲存所有key和value的鍵值對iterator iterator map.entryset iterator while iterator.hasnext for entryentry map.entryset keyset物件也實現了set介面,內部儲存...

map的四種遍歷

map是一種常見的儲存資料的集合,對其的遍歷也很常見,這裡做一下總結 public static void main string args 第二種 system.out.println 通過map.entryset使用iterator遍歷key和value iterator it map.entr...