本教程介绍了在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));