如何在函数中使用Iterator?

时间:2014-11-17 19:22:30

标签: java printing iterator iterable

我试图通过一些例子来了解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.
    }
}

3 个答案:

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