如何迭代一个hashmap,是否需要在Java中强制转换keySet()?

rat*_*zip 0 java iterator hashmap map

我有一个关于迭代一个hashmap的问题:

Map<String, Integer> map = new HashMap<String, Integer>();
Run Code Online (Sandbox Code Playgroud)

我想迭代这个hashmap并使用以下代码打印输出键和值对:

Iterator iterator = portMap.keySet().iterator();
Run Code Online (Sandbox Code Playgroud)

但它表明我要转换portMap.keySet().iterator();(Iterator)portMap.keySet().iterator();但是iterator()作为迭代器已经返回,为什么我需要转换它?我检查了一些其他代码,没有演员的返回值iterator(),原因是什么,以及如何修复它?

ass*_*ias 5

如果要打印键和值,则应使用entrySet:

for (Map.Entry<String, Integer> e : map.entrySet()) {
    System.out.println(e.getKey() + " = " + e.getValue());
}
Run Code Online (Sandbox Code Playgroud)

至于您的转换问题,可能是因为您在导入中导入了不同的Iterator类.使用正确的导入,这可以很好地编译而不需要转换:

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

//.....

Map<String, Integer> map = new HashMap<String, Integer>();
Iterator<String> iterator = map.keySet().iterator();
Run Code Online (Sandbox Code Playgroud)