Java中迭代Map和HashMap的多种方式及实例

125 阅读1分钟

本教程介绍了在java中迭代Map的键和值的多种方法。

在java中,有多种方法来迭代HashMap和Map

  • 迭代器和Map.entrySet的java 4版本
  • 使用for循环
  • java8 foreach迭代keySet,entrySet和value

让我们声明一个HashMap,键为字符串,值为整数。

以下面的代码为例,将数据插入地图中:

  HashMap<String, Integer> words = new HashMap<>();

        words.put("one", 1);
        words.put("two", 2);
        words.put("three", 3);
        words.put("four", 4);
        words.put("five", 5);
        words.put("six", 6);

可以用下面的方法对地图进行迭代

  • entrySet()方法返回Map.entry对象,它包含key和value。
  • keySet()方法返回键值的集合。
  • values()方法返回值的集合。

你可以使用下面描述的其中一个方法进行迭代

迭代java地图中的键和值对

这个例子使用了Iterator和Map.Entry,它在Java中工作。

迭代器用于迭代集合类型,如List、Set和Map

  • 首先,使用entrySet方法获得Map.Entry值的集合,调用Iterator 方法。
  • 它返回Iterator<Map.Entry> 对象。
  • 接下来,调用Iterator.hasNext 方法,使用while循环检查元素是否存在。
  • 打印数值,并使用getKey和values方法。
  • 调用next()方法,将迭代移到下一个元素。

这是一个例子

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class MapIteration {
    public static void main(String[] args) {
        HashMap<String, Integer> words = new HashMap<>();

        words.put("one", 1);
        words.put("two", 2);
        words.put("three", 3);
        words.put("four", 4);
        words.put("five", 5);
        words.put("six", 6);

        Iterator<Map.Entry<String, Integer>> iterator = words.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, Integer> keyvalues = iterator.next();
            System.out.println(keyvalues.getKey() + ":" + keyvalues.getValue());

        }
    }
}
  • 使用for循环

这是一个在java中迭代key和value的例子:

  for (Map.Entry<String, Integer> pair : words.entrySet()) {
            System.out.println(pair.getKey() + ":" + pair.getValue());

        }

在java 10版本中,你可以使用var关键字来声明变量,而不需要定义类型。Map.Entry类型不需要声明类型,因为var关键字允许你从值中推断出类型:

  for (var pair : words.entrySet()) {
            System.out.println(pair.getKey() + ":" + pair.getValue());

        }
  • java8的foreach迭代keySet、entrySet和value

java 8引入了forEach方法,该方法使用lambda表达式。

以下是对地图的键和值进行迭代的方法

        // iterate key and values
        words.entrySet().forEach(entry -> System.out.println(entry));
        // iterate keys
        words.keySet().forEach(key -> System.out.println(key));
        // iterate values
        words.values().forEach(value -> System.out.println(value));