1

重複の可能性:
Iterator と Listiterator の違いは?

最近、javadoc を調べていたときに、List インターフェイスにiterator()listIterator()という 2 つのメソッドを見つけました。戻り値の型の違い以外に、これら 2 つのメソッドの違いは何ですか? 以下は、両方の方法の Java ドキュメントです。

// List Iterators
/**
 * Returns a list iterator over the elements in this list (in proper
 * sequence).
 *
 * @return a list iterator over the elements in this list (in proper
 *         sequence)
 */
ListIterator<E> listIterator();

/**
 * Returns an iterator over the elements in this list in proper sequence.
 *
 * @return an iterator over the elements in this list in proper sequence
 */
Iterator<E> iterator();
4

4 に答える 4

6

ListIteratorはIteratorを拡張したサブクラスです。

ListIteratorを使用すると、さらに要素があるかどうかをチェックし ( hasNext())、次の要素を取得する( )だけでなく、双方向のトラバーサルが可能になりますnext()。カーソル位置を維持し、呼び出して位置next()previous()変更し、関連する値を返します。 ListIteratorでは、エントリの追加 ( add(E e)) と、基になるリストへのエントリの設定( ) も可能です (set(E e)削除のみを許可するイテレータとは異なります)。

于 2012-06-11T10:13:08.713 に答える
4

ListIterator を使用すると、リストを前後に移動できますが、Iterator を使用すると前方のみを移動できます。一方、ListIterator はリストにのみ使用されますが、Iterator はマップ、セット、およびリストに使用されます。

于 2012-06-11T10:17:55.530 に答える
1

ListIterator :

ListIterator には現在の要素がありません。そのカーソル位置は常に、previous() の呼び出しによって返される要素と next() の呼び出しによって返される要素の間にあります。

于 2012-06-11T10:13:45.077 に答える
1

ListIteratorは単純なIteratorの単なる拡張であり、どちらの方向にもリストをトラバースし、反復中にリストを変更し、リスト内の反復子の現在の位置を取得できます。

于 2012-06-11T10:14:22.303 に答える