【发布时间】:2018-05-20 19:12:01
【问题描述】:
我对迭代器上的 next() 方法有疑问。如果我的代码中有这行(arrayOfStrings size = 4):
Iterator<String> it = arrayOfStrings.iterator(); //arrayOfString is ArrayList<String>
while(it.hasNext()) {
String e = it.next();
System.out.println(e);
}
在第一次迭代时,迭代器开始指向索引为 0 的元素?还是像“索引-1”?
我问是因为据我所知next() 方法返回集合中的下一个元素。
那么,如果在第一次迭代中,当调用 next() 时,迭代器从索引 0 开始,它会返回索引 1 处的元素,而我将无法对索引 0 处的元素执行任何操作?
【问题讨论】:
-
您显示的代码应正确打印
ArrayList的所有元素。it.next()调用将在第一次调用时返回第一个元素。该元素通常用 index 0 表示。 -
你知道你可以查看java类的源代码来了解它们的作用和方法吗?
-
当您输入文本时,将迭代器视为光标,假设您在某个文本文件中有“abc”,并且您想读取这些字母中的每一个,在最开始的光标将就在字母“a”之前,当你调用 next 时,想象它向右移动一个位置并选择它移动过的元素,所以你现在可以打印该元素或用它做一些事情,然后在下一次调用时它会移动过去跨过“b”,这样你就可以用“b”做点什么,它会一直这样做,直到它没有东西可以移动。
-
这都是关于文档的,因为它只是说“返回下一个元素”。从技术上讲,next 意味着之前已经存在。所以在我看来,问第一个元素是什么是合理的。文档可以更好地解释这一点。