首页 > 解决方案 > 迭代器如何在 LinkedList 上工作?

问题描述


我对编程很陌生,我目前正在学习 Java,特别是,我现在正在处理 LinkedList 和 Iterators。我试图打印 LinkedList 指向的对象的值,我使用了以下代码:

import java.util.LinkedList;
import java.util.Iterator;
public class Main
{
    public static void main(String[] args) {
    LinkedList<String> list= new LinkedList<>();
    list.add("Florence");
    list.add("Paris");
    list.add("Berlin");
    
    printList(list);
    }
    
    
    public static void printList(LinkedList<String> list){
        Iterator<String> i= list.iterator();
        while(i.hasNext()){
            System.out.println("Now visiting: "+ i.next());
            
        }
        
    }
}

事实上,当我运行程序时,所有项目都打印出来了,但我恐怕不太明白其中的逻辑。
这就是我得到它的方式:当调用printList方法时,迭代器从第 0 个元素开始,它有一个下一个元素,打印第 0 个元素,迭代器转到第一个元素。现在它打印第一个元素并转到第二个元素,现在我希望i.hasNext()返回 false,从而导致循环中断。
显然,自从打印第二个元素以来,这不是发生的事情,所以我想知道是否有人可以向我解释所涉及的实际过程。
提前感谢您的回答,
祝您有美好的一天,
安德里亚。

编辑:感谢您的反馈,我明白为什么我确实需要 i.next() 来迭代元素。实际上我不明白为什么当我到达最后一个元素时(我想 .hasNext 返回 false)无论如何都会打印该值。

标签: java

解决方案


推荐阅读