Processing是否支持iterator?

时间:2012-12-22 16:13:30

标签: java iterator processing

我希望在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。但是,我无法找到有关迭代器的更多信息。我想知道处理器是否支持迭代器?或者我应该导入一些库,以便我能够使用它们?

2 个答案:

答案 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);