我有一个关于迭代hashmap的问题:
Map<String, Integer> map = new HashMap<String, Integer>();我想要迭代这个hashmap,并使用以下代码输出键和值对:
Iterator iterator = portMap.keySet().iterator();但是它指示我将portMap.keySet().iterator();强制转换为(Iterator)portMap.keySet().iterator();,但是iterator()已经作为迭代器返回,为什么我需要强制转换它?我检查了其他一些代码,iterator()的返回值没有强制转换,原因是什么,如何修复它?
发布于 2014-02-05 22:09:51
如果你想打印这些键和值,你应该改用entrySet:
for (Map.Entry<String, Integer> e : map.entrySet()) {
System.out.println(e.getKey() + " = " + e.getValue());
}至于您的造型问题,可能是因为您在导入时导入了不同的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();发布于 2014-02-05 22:29:59
您可以通过以下方式使用enhanced loop:
for (Entry entry : map.entrySet()) {
System.out.format("%s , %s\n", entry.getKey(), entry.getValue());
}就像这样,你循环遍历映射的所有条目。在导入部分中,您应该导入以下Entry
import java.util.Map.Entry;因此,complete imports部分将如下所示:
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;如果您想要遍历这些键并提取每个键的相应值,您可以使用以下方法:
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));
}我希望这些对你有帮助。
https://stackoverflow.com/questions/21579560
复制相似问题