1. 程式人生 > >Map的6種遍歷方法

Map的6種遍歷方法

探討有幾種遍歷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