java - 迭代器如何在 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)无论如何都会打印该值。
解决方案
推荐阅读
- python-3.x - 如何以 URL 编码形式获取用户身份验证令牌并使用 Python 接收 JWT 令牌?
- java - 使用 Java -jar 运行一些 parquet-tools 命令
- javascript - 如何从 Nest.js 中的服务触发应用程序关闭?
- css - 如何覆盖样式组件中的css类
- python - 使用最近邻的加权聚类
- php - 分配中的php比较运算符
- ios - 如何从字符串数组中删除图像?
- javascript - 使用 NativeScript 在 Android 上删除按钮的边距
- c++ - c++,qt:将日期写入标签
- javascript - AngularJS - 将代码重构为服务/工厂