Map的6種遍歷方法
阿新 • • 發佈:2018-12-14
探討有幾種遍歷Map的方法其實意義並不大,網上的文章一般講4種或5種的居多,重要的是知道遍歷的內涵,從遍歷元素的角度來看,分為Key、Value、Map.Entry,從遍歷的方法來看,分為foreach、Iterator。即Map可以對Key、Value、Map.Entry分別執行foreach、Iterator遍歷,所以總結有2*3=6種遍歷方式。
提供例項如下。
原始碼如下 package com;
import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class TestMapTraversal { public static void main(String[] args) { Map<Integer, String> testmap = new HashMap<Integer, String>(); testmap.put(100, "100"); testmap.put(200, "200"); System.out.println("\n------>1"); //方法1:按照key foreach for (Integer key : testmap.keySet()) { System.out.println("key=" + key + ", value=" + testmap.get(key)); } //方法2:按照key iterator Iterator<Integer> iterable2 = testmap.keySet().iterator(); System.out.println("\n------>2"); int key2; while(iterable2.hasNext()) { key2 = iterable2.next(); System.out.println("key=" + key2 + ", value=" + testmap.get(key2)); } //方法3:按照Map.Entry foreach System.out.println("\n------>3"); for (Map.Entry<Integer, String> entry : testmap.entrySet()) { System.out.println("key=" + entry.getKey() + ", value=" + entry.getValue()); } //方法4:按照Map.Entry Iterator System.out.println("\n------>4"); Iterator iterator4 = testmap.entrySet().iterator(); Map.Entry<Integer, String> entry4; while(iterator4.hasNext()) { entry4 = (Map.Entry)iterator4.next(); System.out.println("key=" + entry4.getKey() + ", value=" + entry4.getValue()); } //方法5:按照value foreach System.out.println("\n------>5"); for (String value : testmap.values()) { System.out.println("value=" + value); } //方法6:按照value iterator System.out.println("\n------>6"); Iterator iterator6 = testmap.values().iterator(); String value6; while(iterator6.hasNext()) { value6 = (String)iterator6.next(); System.out.println("value=" + value6); } } }
執行結果如下
------>1
key=100, value=100
key=200, value=200
------>2
key=100, value=100
key=200, value=200
------>3
key=100, value=100
key=200, value=200
------>4
key=100, value=100
key=200, value=200
------>5
value=100
value=200
------>6
value=100
value=200