【发布时间】:2019-02-02 14:59:26
【问题描述】:
我在 oracle 文档中阅读了 iterator.next() ,它说:iterator.next() 返回迭代中的下一个元素。我有这段代码,假设集合不为空:
while ( iterator.hasNext() ){
Card nextCard = iterator.next();
System.out.println( nextCard );
}
在第一个循环中,调用hasNext(),有一个指针指向第一个元素,然后调用next()返回下一个元素,表示第二个元素,然后将指针移动到第二个元素,但是为什么我仍然可以打印出第一个元素?
【问题讨论】:
-
指针从指向第一个元素开始,所以第一次调用
next()会返回第一个元素,以此类推 -
您仍然可以打印第一个元素,因为您的局部变量
nextCard指向它。这与迭代器的位置无关。 -
next()挑选并记住指针处的元素,然后前进指针,然后返回记住的元素。 -
你想多了。
next()返回序列中的下一个元素,从第一个元素开始。 -
那么,当您还没有检索到 any 元素时,“下一个”元素是什么?这是第一个元素,是吗?