在下面的代码中:
int i = element.getList().indexOf(element);
boolean test = element.getList().listIterator(i).hasNext();
测试正在返回true
但是,如果我致电element.getList().size()
,则会返回1
元素是唯一添加到列表中的内容,所以当我要求它的大小时,它似乎正常运行。但是,hasNext()
会一直返回true
,即使整个列表中只有一件事。
我在这里缺少什么?
答案 0 :(得分:3)
您错过了这样一个事实:如果不在next()
上调用Iterator
,您就不会消耗唯一存在的项目。
由于文档说明了listIterator(int index)
(它也适用于通用迭代器):
从列表中的指定位置开始,返回此列表中元素的列表迭代器(按正确顺序)。 指定的索引表示初始调用next将返回的第一个元素。对previous的初始调用将返回指定索引减去1的元素。
迭代器处于类似于以下状态:
iterator position
v
| element |
因为您可以看到hasNext()
返回true
是正确的。