Java 在链表类中实现迭代器接口

Java 在链表类中实现迭代器接口,java,iterator,linked-list,Java,Iterator,Linked List,出于某种原因,我在这里得到了一个无限循环,我不知道为什么。我在我的main方法中运行了这个函数,它一直在打印132,我不确定出了什么问题。让迭代器退出循环。每次循环完成一个循环时,您都会得到一个新的迭代器。因此,只有第一个元素被一次又一次地打印。由于同一元素被一次又一次地打印,有两种可能发生 迭代器没有移动,并且指向同一个元素,即使在调用next之后也是如此 链表是循环链表,迭代器自动移动,无需调用next。所以迭代器移动到下一个节点(value=133),然后调用next将把它移动到同一个元素

出于某种原因,我在这里得到了一个无限循环,我不知道为什么。我在我的main方法中运行了这个函数,它一直在打印132,我不确定出了什么问题。

让迭代器退出循环。每次循环完成一个循环时,您都会得到一个新的迭代器。因此,只有第一个元素被一次又一次地打印。

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

  • 迭代器没有移动,并且指向同一个元素,即使在调用next之后也是如此
  • 链表是循环链表,迭代器自动移动,无需调用next。所以迭代器移动到下一个节点(value=133),然后调用next将把它移动到同一个元素,因为它是循环的

  • 我希望问题在于链表代码。因此,请给出链表代码。这将有助于找出错误。

    您是否也可以为链表添加代码,以及如何创建迭代器以获得更清晰的信息?
      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());
     }