Java遍歷Map對象的四種方法。本站提示廣大學習愛好者:(Java遍歷Map對象的四種方法)文章只能為提供參考,不一定能成為您想要的結果。以下是Java遍歷Map對象的四種方法正文
關於java中遍歷map詳細哪四種方法,請看下文詳解吧。
方法一 這是最多見的而且在年夜多半情形下也是最可取的遍歷方法。在鍵值都須要時應用。
Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (Map.Entry<Integer, Integer> entry : map.entrySet()) { System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); }
辦法二 在for-each輪回中遍歷keys或values。
假如只須要map中的鍵或許值,你可以經由過程keySet或values來完成遍歷,而不是用entrySet。
Map<Integer, Integer> map = new HashMap<Integer, Integer>(); //遍歷map中的鍵 for (Integer key : map.keySet()) { System.out.println("Key = " + key); } //遍歷map中的值 for (Integer value : map.values()) { System.out.println("Value = " + value); }
該辦法比entrySet遍歷在機能上稍好(快了10%),並且代碼加倍清潔。
辦法三應用Iterator遍歷
應用泛型:
Map<Integer, Integer> map = new HashMap<Integer, Integer>(); Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator(); while (entries.hasNext()) { Map.Entry<Integer, Integer> entry = entries.next(); System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); }
不應用泛型:
Map map = new HashMap(); Iterator entries = map.entrySet().iterator(); while (entries.hasNext()) { Map.Entry entry = (Map.Entry) entries.next(); Integer key = (Integer)entry.getKey(); Integer value = (Integer)entry.getValue(); System.out.println("Key = " + key + ", Value = " + value); }
你也能夠在keySet和values上運用異樣的辦法。
該種方法看起來冗余卻有其長處地點。起首,在老版本java中這是唯一遍歷map的方法。另外一個利益是,你可以在遍用時挪用iterator.remove()來刪除entries,另兩個辦法則不克不及。依據javadoc的解釋,假如在for-each遍歷中測驗考試應用此辦法,成果是弗成猜測的。
從機能方面看,該辦法類同於for-each遍歷(即辦法二)的機能。
辦法4、經由過程鍵找值遍歷(效力低)
Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (Integer key : map.keySet()) { Integer value = map.get(key); System.out.println("Key = " + key + ", Value = " + value);
作為辦法一的替換,這個代碼看上去加倍清潔;但現實上它相當慢且有效率。由於從鍵取值是耗時的操作(與辦法一比擬,在分歧的Map完成中該辦法慢了20%~200%)。假如你裝置了FindBugs,它會做出檢討並正告你關於哪些是低效力的遍歷。所以盡可能防止應用。
總結
假如僅須要鍵(keys)或值(values)應用辦法二。假如你應用的說話版本低於java 5,或是盤算在遍用時刪除entries,必需應用辦法三。不然應用辦法一(鍵值都要)。