このメソッドが何をするのかわかりません。誰か説明してくれませんか?
例:
for (Iterator ite = list.iterator(); ite.hasNext(); )
ありがとう、私はJavaを学び始めたばかりです。現在9年生。
非常に基本的なレベルでは、反復子は最後に到達するまでリストを「ウォークスルー」します。したがって、そのメソッドでは、リスト内の 1 つのオブジェクトを指すオブジェクトを作成しています。next()
イテレータを呼び出すと、リスト内の次のオブジェクトに移動します。イテレータを呼び出すときはhasNext()
、イテレータが他に移動する場所があるかどうか、またはリストの最後にあるかどうかを尋ねています。 hasNext()
イテレータに a がある場合は true を返し、next()
そうでない場合は false を返します。
次のように for ループを作成することをお勧めします。
for ( Iterator iter = list.iterator(); iter.hasNext(); iter.next() )
これにより、リスト (最初の要素) の新しい反復子が作成されます。ループが戻るたびにiter.next()
、イテレータがリスト内の次の要素を指すようにする呼び出しが行われます。リストの最後に到達すると、iter.hasNext()
は真ではなくなるため、ループが中断されます。
つまり、リストのすべての要素を通過する for ループを作成しているだけです。
イテレータを使用してリストを「読み取る」だけです (読み取り中にリストから要素を削除する場合に便利です)。
イテレータから要素を取得するには、
Item item = ite.next();
リストからアイテムを削除したい場合は、簡単に行うことができます
ite.remove();
次のように、より単純な for でもリストをループできます
for (Item item : list) {
System.out.println(item.toString());
}
また
for (int i = 0; i<list.size(); i++) {
Item item = list.get(i);
System.out.println(item.toString());
}
しかし、これらを使用すると、実行しようとするとlist.remove(item)
例外list.remove(i)
が発生します(間違っていなければ ConcurrentModificationException )。