我已经在oracle doc中阅读了有关iterator.next()的内容,并说:iterator.next()返回迭代中的下一个元素。我有这段代码,假设集合不是空的:
while ( iterator.hasNext() ){
Card nextCard = iterator.next();
System.out.println( nextCard );
}
在第一个循环中,调用hasNext()并且有一个指向第一个元素的指针,然后调用next()并返回下一个元素,这意味着第二个元素,然后将指针移至第二个元素,但是为什么我仍然可以打印出第一个元素?
答案 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()
返回集合的第一个元素;并在第二个循环中返回第二个元素