声明:迁移自本人CSDN博客https://blog.csdn.net/u013365635

探讨有几种遍历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