为什么方法.hasNext()返回true?
问题描述:
在下面的代码:为什么方法.hasNext()返回true?
int i = element.getList().indexOf(element);
boolean test = element.getList().listIterator(i).hasNext();
测试将返回true
但是如果我把element.getList().size()
它返回1
元素是添加到列表中的唯一的事,所以当我询问它的尺寸时,它似乎确实运行正常。然而hasNext()
总是返回true
即使整个列表中只有一件事。
我在这里错过了什么?
答
您错过了在Iterator
上不拨打next()
的事实,您不会消费目前唯一的一件商品。
正如文件指出有关listIterator(int index)
(以及其持有的通用的迭代太):
返回在此列表中的元素的列表迭代器(以正确的顺序),从在列表中的指定位置。 指定的索引表示将首次调用返回到下一个元素的第一个元素。对previous的初始调用将返回指定索引减1的元素。
的迭代器是类似于以下状态:
iterator position
v
| element |
所以你可以看到你hasNext()
是正确的返回true
。
因为你*之前*的第一个元素。 –