7

イテレータの原則でforループを使用するのが大好きです。

for(String s : collectionWithStrings)
    System.out.println(s + ", ");

質問:現在の要素が最後の要素であるかどうかを確認するにはどうすればよいですか?

このような独自のインデックスを使用するint = 0; i < collection.size(); i++ことは可能i == collection.size() - 1ですが、うまくいきません。上記の例のイテレータで最後の要素を決定することも可能ですか?

4

3 に答える 3

8

実際、Iterator#hasNextメソッドは、イテレータがメソッドで別の要素を返すかどうかを決定するブール値を返しますnext

あなたの反復は次のように置くことができます:

Iterator<String> iterator = collectionWithString.iterator();
while(iterator.hasNext()) {
    String current = iterator.next();
    // if you invoke iterator.hasNext() again you can know if there is a next element
}
于 2013-02-05T14:55:21.793 に答える
5

hasNextメソッドを使用するだけです。

if(!iterator.hasNext()) {
    // this is the last element
}

通常、次のように繰り返しIteratorます。

while(iterator.hasNext()) {
    Object obj = iterator.next();
}
于 2013-02-05T14:55:29.953 に答える
3

独自のカウンターを維持せずに拡張forループを使用することはできません。正直なところ、これは、使用するforループのタイプを選択する際の私の1つの決定要因です。

を使用すると、最後の要素を処理しているときにfalseを返すメソッドにIteratorアクセスできます。hasNext()

于 2013-02-05T14:55:26.287 に答える