在链表类中实现Iterator接口

时间:2014-03-13 04:28:10

标签: java iterator linked-list

  public boolean hasNext() {
          // TODO Auto-generated method stub
          return current != null;
      }


      public T next() throws NoSuchElementException {

          if (!hasNext())
              throw new NoSuchElementException();
          else  
              prev = current;
          current = current.next;


          return (T) prev.data;
      }

  //This is my linked list
 f.add(132);
  f.add(133);

//while loop I am using in regular main method to test
 while(f.iterator().hasNext()){
System.out.println(f.iterator().next());
 }

出于某种原因,我在这里得到一个无限循环,我不知道为什么。我在我的主要方法中运行它,它只是保持打印132,我不确定是什么问题。

2 个答案:

答案 0 :(得分:1)

将迭代器从循环中取出。每次循环完成一个循环时,您将获得一个新的迭代器。因此,只是第一个元素被反复打印。

答案 1 :(得分:0)

由于同一元素一次又一次打印,有可能发生两种可能性。

  1. 即使在您调用next之后,迭代器也不会移动并指向相同的元素。
  2. 链表是圆形的,迭代器自动移动而不接下来调用。所以迭代器移动到下一个Node(值= 133),然后调用next将它移动到同一个元素,因为它是循环的。
  3. 我希望问题出在链表代码上。所以给出链表代码。这将有助于找出错误。