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

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

问题描述:

在下面的代码:为什么方法.hasNext()返回true?

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

测试将返回true

但是如果我把element.getList().size()它返回1

元素是添加到列表中的唯一的事,所以当我询问它的尺寸时,它似乎确实运行正常。然而hasNext()总是返回true即使整个列表中只有一件事。

我在这里错过了什么?

+2

因为你*之前*的第一个元素。 –

您错过了在Iterator上不拨打next()的事实,您不会消费目前唯一的一件商品。

正如文件指出有关listIterator(int index)(以及其持有的通用的迭代太):

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

的迭代器是类似于以下状态:

iterator position 
v 
| element | 

所以你可以看到你hasNext()是正确的返回true