迭代器的 next() 方法如何工作?

Ang*_*xus 4 java iterator

我对迭代器的方法有疑问next()。如果我的代码中有此行(arrayOfStrings大小 = 4):

\n\n
Iterator<String> it = arrayOfStrings.iterator(); //arrayOfString is ArrayList<String>\n\nwhile(it.hasNext()) {\n    String e = it.next();\n    System.out.println(e);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

在第一次迭代时,迭代器开始指向索引为 0 的元素?或者像“索引-1”?

\n\n

我问这个问题是因为据我所知该next()方法返回集合中的下一个元素。

\n\n

因此,如果在第一次迭代时,迭代器在next()调用时从索引 0 开始,它将返回索引 1 处的元素,并且我将\xc2\xb4t 无法对索引 0 处的元素执行任何操作?

\n

Bil*_*ard 9

可以将其视为next一个两步过程。首先,它获取迭代器中的下一个项目,然后递增指针以指向下一个项目。因此,当您创建新的迭代器时,它会被初始化为返回列表中的第一项(索引 0)。


Prz*_*kal 6

我想象迭代器工作方式的方式是将其视为放置在索引之间的东西。因此,当调用第一个next()函数时,您可以返回存储在 [0] 索引下的值,在该调用之后,迭代器将在索引 [0] 和 [1] 之间等待下一次调用,以返回存储在索引 [1] 下的值。 。第二次next()调用后迭代器在 [1] 和 [2] 之间等待,依此类推......

这只是我习惯迭代器的方法,但它可能对您有所帮助。