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

如何迭代hashmap,是否需要在Java中强制转换keySet()?,java,map,iterator,hashmap,Java,Map,Iterator,Hashmap,我有一个关于迭代hashmap的问题: Map<String, Integer> map = new HashMap<String, Integer>(); 但它指示我强制转换portMap.keySet().iterator()到(迭代器)portMap.keySet().Iterator();,但是iterator()已经作为迭代器返回了,为什么我需要强制转换它?我检查了一些其他代码,没有对iterator()的返回值进行强制转换,原因是什么,以及如何修复它?如果要

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

Map<String, Integer> map = new HashMap<String, Integer>();

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

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

for (Map.Entry<String, Integer> e : map.entrySet()) {
    System.out.println(e.getKey() + " = " + e.getValue());
}
for(Map.Entry e:Map.entrySet()){
System.out.println(e.getKey()+“=”+e.getValue());
}
至于您的强制转换问题,可能是因为您在导入中导入了不同的迭代器类。使用正确的导入,无需强制转换即可编译:

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();
import java.util.HashMap;
导入java.util.Iterator;
导入java.util.Map;
//.....
Map Map=newhashmap();
迭代器迭代器=map.keySet().Iterator();

如果要打印键和值,应改用
entrySet

for (Map.Entry<String, Integer> e : map.entrySet()) {
    System.out.println(e.getKey() + " = " + e.getValue());
}
for(Map.Entry e:Map.entrySet()){
System.out.println(e.getKey()+“=”+e.getValue());
}
至于您的强制转换问题,可能是因为您在导入中导入了不同的迭代器类。使用正确的导入,无需强制转换即可编译:

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();
import java.util.HashMap;
导入java.util.Iterator;
导入java.util.Map;
//.....
Map Map=newhashmap();
迭代器迭代器=map.keySet().Iterator();

您可以通过以下方式使用增强循环:

for (Entry entry :  map.entrySet()) {
    System.out.format("%s , %s\n", entry.getKey(), entry.getValue());
}
import java.util.HashMap;
import java.util.Map;
// ...
for (String s : map.keySet()) {
   System.out.format("%s , %s\n", s, map.get(s));
}
这样你就可以在地图的所有条目上循环。 在“导入”部分中,您应该具有以下

因此,完整的导入部分如下所示:

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

import java.util.Map.Entry;
如果要查看键并提取每个键的相应值,可以按以下方式进行操作:

for (Entry entry :  map.entrySet()) {
    System.out.format("%s , %s\n", entry.getKey(), entry.getValue());
}
import java.util.HashMap;
import java.util.Map;
// ...
for (String s : map.keySet()) {
   System.out.format("%s , %s\n", s, map.get(s));
}
如果要使用迭代器并在键上循环,并基于键从映射中提取:

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

Iterator<String> it = map.keySet().iterator();

while (it.hasNext()){
   String currentKey = it.next();
   System.out.format("%s , %s\n", currentKey), map.get(currentKey));
}
import java.util.HashMap;
导入java.util.Iterator;
导入java.util.Map;
//...
迭代器it=map.keySet().Iterator();
while(it.hasNext()){
字符串currentKey=it.next();
System.out.format(“%s,%s\n”,currentKey),map.get(currentKey));
}

我希望这些对您有所帮助。

您可以通过以下方式使用
增强循环:

for (Entry entry :  map.entrySet()) {
    System.out.format("%s , %s\n", entry.getKey(), entry.getValue());
}
import java.util.HashMap;
import java.util.Map;
// ...
for (String s : map.keySet()) {
   System.out.format("%s , %s\n", s, map.get(s));
}
这样你就可以在地图的所有条目上循环。 在“导入”部分中,您应该具有以下

因此,完整的导入部分如下所示:

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

import java.util.Map.Entry;
如果要查看键并提取每个键的相应值,可以按以下方式进行操作:

for (Entry entry :  map.entrySet()) {
    System.out.format("%s , %s\n", entry.getKey(), entry.getValue());
}
import java.util.HashMap;
import java.util.Map;
// ...
for (String s : map.keySet()) {
   System.out.format("%s , %s\n", s, map.get(s));
}
如果要使用迭代器并在键上循环,并基于键从映射中提取:

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

Iterator<String> it = map.keySet().iterator();

while (it.hasNext()){
   String currentKey = it.next();
   System.out.format("%s , %s\n", currentKey), map.get(currentKey));
}
import java.util.HashMap;
导入java.util.Iterator;
导入java.util.Map;
//...
迭代器it=map.keySet().Iterator();
while(it.hasNext()){
字符串currentKey=it.next();
System.out.format(“%s,%s\n”,currentKey),map.get(currentKey));
}

我希望这些可以帮助您。

是否有意让
map
portMap
有所不同?是否有任何错误?我猜您的IDE只会显示一个警告(eclipse中的黄色下划线),这是因为返回的可能是迭代器,而您将其分配给迭代器是有意的,
map
portMap
不同吗?是否有错误?我猜您的IDE只会显示一个警告(eclipse中的黄色下划线),这是因为返回的可能是迭代器,而您正在将其分配给迭代器为什么应该输入迭代器?@ratzip我想您的意思是“什么”,而不是“为什么”为什么应该输入迭代器?@ratzip我想您的意思是“什么”,而不是“为什么”