java-iterator.next()如何返回第一个元素?

时间:2018-08-28 04:20:11

标签: java iterator

我已经在oracle doc中阅读了有关iterator.next()的内容,并说:iterator.next()返回迭代中的下一个元素。我有这段代码,假设集合不是空的:

while ( iterator.hasNext() ){
        Card nextCard = iterator.next();
        System.out.println( nextCard );
    }

在第一个循环中,调用hasNext()并且有一个指向第一个元素的指针,然后调用next()并返回下一个元素,这意味着第二个元素,然后将指针移至第二个元素,但是为什么我仍然可以打印出第一个元素?

3 个答案:

答案 0 :(得分:0)

文档显示“ hasNext(),如果集合中有更多要迭代的元素,则返回true。”

hasNext()不会将指针移动到下一个元素,它只是告诉您是否存在下一个迭代元素。 next()依次返回下一个元素并移动指针。

答案 1 :(得分:0)

访问Java文档以清除不确定性的良好实践。 这是JavaDoc for Iterator-> hasNext所说的

  

布尔hasNext()       如果迭代具有更多元素,则返回true。 (换句话说,如果next()将返回一个元素而不是抛出一个   例外。)       返回值:       如果迭代包含更多元素,则为true

hasNext仅查找下一个索引位置是否存在元素,然后返回布尔值。指针将在next()

上向前移动

答案 2 :(得分:-1)

iterator.hasNext()不会使指针向前,iterator.next()会使指针向前,因此在第一个循环中,iterator.next()返回集合的第一个元素;并在第二个循环中返回第二个元素