首发于 IT路漫漫
Java中Map集合的两种遍历方式

Java中Map集合的两种遍历方式

Java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下Java中Map集合的两种遍历方式!

关于遍历Map集合的几种方式:

1.获取Map集合的所有key,通过遍历所有的key获取Map中对应的所有value。

用到的方法:Map中的keySet()方法, Set中的get(K key)方法。

2.把Map集合转换成Set集合,通过遍历Set集合获取key和value。

用到的方法:Map中的entrySet()方法,Map.Entry类中的getKey(),getValue()方法。

第2种方法比第1种方法效率要高,因为第1种获取key之后还要去Map集合中去找value,而第2种方法是直接从转成的Set集合中获取到key和value。

测试代码:

import java.util.*;
public class Test02 {
    public static void main(String[] args) {
        // 先创建Map集合
        Map<Integer, String> hashMap = new HashMap<>();
        // 添加几个键值对
        hashMap.put(1, "张三");
        hashMap.put(2, "李四");
        hashMap.put(3, "王五");
        hashMap.put(4, "赵六");
        System.out.println(hashMap.size());  // 4
        // 1.获取Map集合的所有key,通过遍历所有的key获取Map中对应的所有value。
        // 先获取Map中所有的key,得到一个Set集合
        Set<Integer> keys = hashMap.keySet();
        // 再遍历保存所有key的Set集合,Set集合没有下标,遍历集合只有2种方式
        // 迭代器遍历Set集合
        Iterator<Integer> it = keys.iterator();
        while (it.hasNext()) {
            Integer key = it.next();
            String value = hashMap.get(key);
            System.out.print(key + "-" + value + "   ");  // 1-张三   2-李四   3-王五   4-赵六
        System.out.println();
        // foreach遍历Set集合
        for (Integer i : keys) {
            Integer key = i;
            String value = hashMap.get(key);
            System.out.print(key + "-" + value + "   ");  // 1-张三   2-李四   3-王五   4-赵六
        System.out.println();
        //2.把Map集合转换成Set集合,通过遍历Set集合获取key和value。
        // Map集合转成Set集合
        Set<Map.Entry<Integer, String>> mapToSet = hashMap.entrySet();
        // 迭代器遍历Set集合
        Iterator<Map.Entry<Integer, String>> it1 = mapToSet.iterator();
        while (it1.hasNext()) {
            Map.Entry<Integer, String> mn = it1.next();
            Integer key = mn.getKey();
            String value = mn.getValue();
            System.out.print(key + "-" + value + "   ");  // 1-张三   2-李四   3-王五   4-赵六
        System.out.println();
        // foreach遍历Set集合
        for (Map.Entry<Integer, String> mn : mapToSet) {
            Integer key = mn.getKey();
            String value = mn.getValue();