Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么方法.hasNext()返回true?_Java_Iterator - Fatal编程技术网

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

是正确的,因为您在第一个元素之前。因为您在第一个元素之前。