我试图通过一些例子来了解Java中的Iterator功能,我无法弄清楚如何访问迭代器以便我可以开始打印出该集合。
所以我有这个功能:
class A <Item> implements Iterable <Item> {
//....does stuff
}
public Iterator <Item> iterator() {
return new Itor();
}
class Itor implements Iterator <Item> {
//.....custom Iterator functions within
}
基本上,A类是一个包含值列表的数据结构,我想从另一个类中使用迭代器打印出这些值。我该如何实现?我不确定语法是什么样的。
假设我有另一个班级
class B {
private class Node {
A<Integer> n; // I have another class that inserts values into the A class
// and I want to be able to print n out.
}
private void printA() {
Iterator it = A.iterator(); //I get the non-static method error here.
}
}
答案 0 :(得分:0)
假设您的班级实现了“Iterator”,那么您班级的客户只需
1)拨打Iterator it = myInstance.iterator();
(或者更好的是,拨打Iterator<SomeClass> it = myInstance.iterator();
,
2)在循环中调用it.hasNext()
(查看是否还有剩余的对象),最后
3)在该循环内调用myObject = it.next()
(以获取对象)
这是一个很棒的教程(Mkyong的教程所有很棒,IMO;)):
http://www.mkyong.com/java/how-do-loop-iterate-a-list-in-java/
答案 1 :(得分:0)
//清理已编译的
import java.util.*;
class A {
public List<String> list = Arrays.asList("a", "b", "c", "d", "e");
}
public class B {
public Iterator<String> iterator;
public static void main(String[] args) {
A a = new A();
B b = new B();
b.iterator = a.list.iterator();
while(b.iterator.hasNext()) {
System.out.println(b.iterator.next());
}
}
}
答案 2 :(得分:0)
想出来,它就像
一样简单for (Integer n : Node.n) {
System.out.println(n);
}