我希望在Processing中使用hashmap,我希望使用迭代器来遍历hashmap中的所有条目。但是,当我希望使用迭代器时,我被告知“无法找到一个名为Iterator的类或类型”。部分代码如下所示。
Iterator i = nodeTable.entrySet().iterator(); // Get an iterator
while (i.hasNext())
{
Node nodeDisplay = (Node)i.next();
nodeDisplay.drawSelf();
}
从处理网站http://processing.org/reference/HashMap.html我知道迭代器可以用来遍历hashmap。但是,我无法找到有关迭代器的更多信息。我想知道处理器是否支持迭代器?或者我应该导入一些库,以便我能够使用它们?
答案 0 :(得分:2)
只要我解决了问题,我会将部分代码放在这里以防其他人遇到此问题。再次感谢您的帮助。
import java.util.Iterator; // Import the class of Iterator
// Class definition and the setup() function are omitted for simplicity
// The iterator is used here
HashMap<String, Node> nodeTable = new HashMap<String, Node>();
void draw(){
// Part of this function is omitted
Iterator<Node> i = nodeTable.values().iterator();
// Here I use the iterator to get the nodes stored the hashtable and I use the function values() here. entrySet() or keySet() can also be used when necessary
while (i.hasNext()) {
Node nodeDisplay = (Node)i.next();
// Now you can use the node from the hashmap
}
}
答案 1 :(得分:1)
很高兴你解决了你的问题,但对于遇到这个问题的其他人来说,如果你想迭代entrySet()
,有两种方法可以做到。第一种方式:
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class Testing {
public static void main(String[] args) {
Map<String, String> strMap = new HashMap<String, String>();
strMap.put("foo", "bar");
strMap.put("alpha", "beta");
for (Iterator<Entry<String, String>> iter = strMap.entrySet().iterator(); iter.hasNext(); )
{
Entry<String, String> entry = iter.next();
System.out.println(entry.getKey() + "=" + entry.getValue());
}
}
}
请注意代码顶部的导入,您可能错过了Iterator
的导入。
第二个:
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class Testing {
public static void main(String[] args) {
Map<String, String> strMap = new HashMap<String, String>();
strMap.put("foo", "bar");
strMap.put("alpha", "beta");
for (Entry<String, String> entry : strMap.entrySet())
System.out.println(entry.getKey() + "=" + entry.getValue());
}
}
这称为for-each loop,无需使用Iterator
,使代码更加简单。请注意,这也可以在数组上使用,以消除对索引的需求:
String[] strs = {"foo", "bar"};
for (String str : strs)
System.out.println(str);