144
Iterator ite = Set.iterator();
Iterator ite = List.iterator();

ListIterator listite = List.listIterator();

aまたは aまたは aIteratorをトラバースするために使用できます。ただし、 a をトラバースするためにのみ使用でき、 a をトラバースすることはできません。なんで?SetListMapListIteratorListSet

主な違いは、イテレータでは一方向にしか移動できないが、イテレータでは両方向にListIterator移動できることです。他に違いはありますか?ListIterator以上の利点はありIteratorますか?

4

4 に答える 4

157

違いは、 ListIteratorの Javadoc にリストされています。

あなたはできる

  • 逆方向に繰り返す
  • 任意の時点で反復子を取得します。
  • 任意の時点で新しい値を追加します。
  • その時点で新しい値を設定します。
于 2012-06-11T10:06:41.777 に答える
42

次の 2 つの違いがあります。

  1. Iterator を使用して、Set と List をトラバースし、オブジェクトの Map タイプもトラバースできます。ListIterator は、List タイプのオブジェクトのトラバースに使用できますが、Set タイプのオブジェクトのトラバースには使用できません。

    つまり、Set と List を使用して Iterator オブジェクトを取得できます。こちらを参照してください。

    Iterator を使用することで、コレクション オブジェクトから順方向にのみ要素を取得できます。

    イテレータのメソッド:

    1. hasNext()
    2. next()
    3. remove()
    Iterator iterator = Set.iterator();
    Iterator iterator = List.iterator();
  2. ただし、 List インターフェースからのみ ListIterator オブジェクトを取得します。ここを参照してください。

    ListIterator を使用すると、どちらの方向 (前方と後方の両方) にもトラバースできます。そのため、Iterator のメソッド以外にhasPrevious()と のような 2 つのメソッドがあります。previous()また、次または前の要素のインデックスを取得できます (それぞれnextIndex() およびをpreviousIndex()使用) 。

    ListIterator のメソッド:

    1. hasNext()
    2. 次()
    3. 前()
    4. hasPrevious()
    5. 削除する()
    6. 次のインデックス()
    7. 以前のインデックス()
    ListIterator listiterator = List.listIterator();

    つまり、Set インターフェイスから ListIterator オブジェクトを取得することはできません。

参照 : - Iterator と ListIterator の違いは何ですか?

于 2013-07-30T05:49:27.720 に答える
27

Iterator は ListIterator のスーパークラスです。

それらの違いは次のとおりです。

  1. ではiterator前方にしか移動できませListIteratorんが、 では要素を読みながら後方に移動することもできます。
  2. を使用ListIteratorすると、トラバース中の任意の時点でインデックスを取得できますが、これは s では不可能iteratorです。
  3. ではiterator次の要素が利用可能かどうかしか確認できませんが、 ではlistiterator前の要素と次の要素を確認できます。
  4. listiteratorトラバースしながら、いつでも新しい要素を追加できます。ではできませんiterator
  5. ではlistiterator、トラバース中に要素を変更できますが、これは では不可能iteratorです。

イテレータのルック・アンド・フィール:

 public interface Iterator<E> {
    boolean hasNext();
    E next();
    void remove(); //optional-->use only once with next(), 
                         dont use it when u use for:each
    }

ListIterator のルック アンド フィール:

public interface ListIterator<E> extends Iterator<E> {
    boolean hasNext();
    E next();
    boolean hasPrevious();
    E previous();
    int nextIndex();
    int previousIndex();
    void remove(); //optional
    void set(E e); //optional
    void add(E e); //optional
}
于 2013-12-11T10:30:09.493 に答える