2017-04-24 14 views
0

.hasNext()がtrueを返すメソッドはなぜですか?以下のコードで

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

テストは、私がelement.getList().size()を呼び出す場合しかし、それはをリストに追加だけのものだった1

要素を返しtrue

を返しますだから、サイズを聞いたら、それは正しく機能しているようです。しかし、hasNext()は、リスト全体に唯一のものがあるにもかかわらず、trueを返し続けます。

私はここで何が欠けていますか?

+2

*あなたが*最初の要素の前に*いるためです。 –

答えて

3

Iteratornext()を呼び出しても、唯一のアイテムを使用しているわけではありません。

ドキュメントを約listIterator(int index)を述べた(そしてそれはあまりにも一般的なイテレータのために保持している)のよう:

は、リスト内の指定された位置で始まる、(適切な順序で)このリスト内の要素を、リストの反復子を返します。 。 指定されたインデックスは、nextへの最初の呼び出しによって返される最初の要素を示します。 previousへの最初の呼び出しは、指定されたインデックスから1を引いた要素を返します。

イテレータは、次のような状態になっている:だから

iterator position 
v 
| element | 

あなたはhasNext()は、右trueを返すことであるあなたを見ることができるように。

関連する問題