-1

このメソッドが何をするのかわかりません。誰か説明してくれませんか?

例:

for (Iterator ite = list.iterator(); ite.hasNext(); )

ありがとう、私はJavaを学び始めたばかりです。現在9年生。

4

2 に答える 2

0

非常に基本的なレベルでは、反復子は最後に到達するまでリストを「ウォークスルー」します。したがって、そのメソッドでは、リスト内の 1 つのオブジェクトを指すオブジェクトを作成しています。next()イテレータを呼び出すと、リスト内の次のオブジェクトに移動します。イテレータを呼び出すときはhasNext()、イテレータが他に移動する場所があるかどうか、またはリストの最後にあるかどうかを尋ねています。 hasNext()イテレータに a がある場合は true を返し、next()そうでない場合は false を返します。

次のように for ループを作成することをお勧めします。

for ( Iterator iter = list.iterator(); iter.hasNext(); iter.next() )

これにより、リスト (最初の要素) の新しい反復子が作成されます。ループが戻るたびにiter.next()、イテレータがリスト内の次の要素を指すようにする呼び出しが行われます。リストの最後に到達すると、iter.hasNext()は真ではなくなるため、ループが中断されます。

つまり、リストのすべての要素を通過する for ループを作成しているだけです。

于 2013-07-11T20:15:05.390 に答える
0

イテレータを使用してリストを「読み取る」だけです (読み取り中にリストから要素を削除する場合に便利です)。

イテレータから要素を取得するには、

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 )。

于 2013-07-11T20:07:37.823 に答える