Java 为什么方法.hasNext()返回true?
在以下代码中:Java 为什么方法.hasNext()返回true?,java,iterator,Java,Iterator,在以下代码中: int i = element.getList().indexOf(element); boolean test = element.getList().listIterator(i).hasNext(); 测试正在返回true 但是,如果调用element.getList().size()它将返回1 元素是唯一添加到列表中的元素,因此当我询问大小时,它似乎运行正常。然而,hasNext() 我在这里遗漏了什么?您遗漏了这样一个事实,即如果不在迭代器上调用next(),您就不会
int i = element.getList().indexOf(element);
boolean test = element.getList().listIterator(i).hasNext();
测试正在返回true
但是,如果调用element.getList().size()
它将返回1
元素是唯一添加到列表中的元素,因此当我询问大小时,它似乎运行正常。然而,hasNext()
我在这里遗漏了什么?您遗漏了这样一个事实,即如果不在迭代器上调用next()
,您就不会只消费当前的一项
正如文档中所述,listIterator(int-index)
(它也适用于通用迭代器):
返回此列表中元素的列表迭代器(按正确顺序),从列表中的指定位置开始指定的索引表示初始调用next将返回的第一个元素。初始调用previous将返回指定索引减去1的元素
迭代器处于与以下类似的状态:
iterator position
v
| element |
因此,正如您所看到的那样,hasNext()
返回true
是正确的,您忽略了一个事实,即如果不在迭代器上调用next()
,您就不会使用当前的唯一项目
正如文档中所述,listIterator(int-index)
(它也适用于通用迭代器):
返回此列表中元素的列表迭代器(按正确顺序),从列表中的指定位置开始指定的索引表示初始调用next将返回的第一个元素。初始调用previous将返回指定索引减去1的元素
迭代器处于与以下类似的状态:
iterator position
v
| element |
因此,正如您所看到的,hasNext()
返回true
是正确的,因为您在第一个元素之前。因为您在第一个元素之前。