为什么方法.hasNext()返回true?

时间:2017-04-24 03:37:37

标签: java iterator

在下面的代码中:

int i = element.getList().indexOf(element);
boolean test = element.getList().listIterator(i).hasNext();

测试正在返回true

但是,如果我致电element.getList().size(),则会返回1

元素是唯一添加到列表中的内容,所以当我要求它的大小时,它似乎正常运行。但是,hasNext()会一直返回true,即使整个列表中只有一件事。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:3)

您错过了这样一个事实:如果不在next()上调用Iterator,您就不会消耗唯一存在的项目。

由于文档说明了listIterator(int index)(它也适用于通用迭代器):

  

从列表中的指定位置开始,返回此列表中元素的列表迭代器(按正确顺序)。 指定的索引表示初始调用next将返回的第一个元素。对previous的初始调用将返回指定索引减去1的元素。

迭代器处于类似于以下状态:

iterator position
v
|   element   |

因为您可以看到hasNext()返回true是正确的。