2017-04-24 181 views
0

在下面的代碼:爲什麼方法.hasNext()返回true?

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

測試將返回true

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

元素是添加到列表中的唯一的事,所以當我詢問它的尺寸時,它似乎確實運行正常。然而hasNext()總是返回true即使整個列表中只有一件事。

我在這裏錯過了什麼?

+2

因爲你*之前*的第一個元素。 –

回答

3

您錯過了在Iterator上不撥打next()的事實,您不會消費目前唯一的一件商品。

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

返回在此列表中的元素的列表迭代器(以正確的順序),從在列表中的指定位置。 指定的索引表示將首次調用返回到下一個元素的第一個元素。對previous的初始調用將返回指定索引減1的元素。

的迭代器是類似於以下狀態:

iterator position 
v 
| element | 

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