Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaでのIteratorとListIteratorの違い


Javaは、コレクションに格納されているデータを1つずつトラバースするために、これら2つのインターフェースを提供しました。イテレータとリストイテレータの内部実装により、それらは異なりますが、両方のイテレータの主なアジェンダは同じです。

IteratorとListIteratorの重要な違いは次のとおりです。

イテレータ
Sr。いいえ。 キー ListIterator
1 該当する イテレータは、コレクションのタイプに関係なく、任意のコレクションをトラバースするために使用できます。 リストイテレータは、arraylist、linkedlistなどのリストコレクションが実装されたクラスのみを反復するためにのみ使用できます。
2 電話 前述のように、イテレータは、Set、List、Queue、DequeなどのすべてのCollections実装インターフェイス、およびMapインターフェイスのすべての実装クラスの要素を列挙するために使用する必要があります。 Iteratorオブジェクトは、Collectionインターフェイスのiterator()メソッドを呼び出すことで作成できます。 一方、Listの要素を列挙する場合は、ListIteratorを使用する必要があります。ListIteratorのオブジェクトは、ListインターフェイスにあるlistIterator()メソッドを呼び出すことで作成できます。
3 データトラバース イテレータは順方向にのみトラバースできるため、イテレータの場合のデータトラバースは一方向にのみ可能です リストイテレータは、順方向と逆方向の両方にトラバースできるため、データは両方向にトラバースされます。
4 削除 イテレータの場合、要素の削除は許可されていません。 ListIteratorは、リストコレクション内の要素を置き換えることができます。
5 追加 イテレータの場合、ConcurrentModificationExceptionがスローされるため、要素の追加は許可されていません。 ListIteratorは、いつでも簡単にリストコレクションに要素を追加できます。
6 変更 イテレータの場合、ConcurrentModificationExceptionがスローされるため、要素の変更は許可されていません。 ListIteratorは、set()メソッドを呼び出すことにより、リストコレクション内の要素をいつでも簡単に変更できます。
7 要素のインデックス イテレータを使用している間は、コレクション内のトラバースされた要素のインデックスを取得できません。 ListIteratorには、Listをトラバースしている間いつでも要素のインデックスを取得するnextIndex()やpreviousIndex()などのメソッドがあります。

イテレータとListIteratorの例

JavaTester.java

import java.io.*;
import java.util.*;
public class JavaTester {
   public static void main(String[] args){
      ArrayList<Integer> list = new ArrayList<Integer>();
      list.add(1);
      list.add(2);
      list.add(3);
      list.add(4);
      list.add(5);
      //Iterator
      Iterator itr = list.iterator();
      System.out.println("Iterator traversal:");
      while (itr.hasNext())
      System.out.print(itr.next() + " ");
      System.out.println();
      // ListIterator
      ListIterator i = list.listIterator();
      System.out.println("ListIterator Forward traversal:");
      while (i.hasNext()){
         System.out.print(i.next() + " ");
         System.out.println();
         System.out.println("ListIterator Backward traversal : ");
      }
      while (i.hasPrevious()){
         System.out.print(i.previous() + " ");
         System.out.println();
      }
   }
}

出力

Iterator traversal:
1 2 3 4 5
ListIterator Forward traversal:
1
ListIterator Backward traversal :
2
ListIterator Backward traversal :
3
ListIterator Backward traversal :
4
ListIterator Backward traversal :
5
ListIterator Backward traversal :
5
4
3
2
1

  1. JavaでのArrayListとHashSetの違い

    HashSetとArrayListはどちらも、Javaコレクションフレームワークの最も重要なクラスの一部です。 以下は、ArrayListとHashSetの重要な違いです。 Sr。いいえ。 キー ArrayList ハッシュセット 1 実装 ArrayListはリストインターフェイスの実装です。 一方、 HashSetは、セットインターフェイスの実装です。 2 内部実装 ArrayListは、その実装のために配列を内部的に実装します。 HashSetは、実装にHashmapを内部的に使用します。 3 要素の順序 ArrayListは、挿入順序、つまり

  2. JavaでのIteratorとListIteratorの違い

    Javaは、コレクションに格納されているデータを1つずつトラバースするために、これら2つのインターフェースを提供しました。イテレータとリストイテレータの内部実装により、それらは異なりますが、両方のイテレータの主なアジェンダは同じです。 IteratorとListIteratorの重要な違いは次のとおりです。 Sr。いいえ。 キー イテレータ ListIterator 1 該当する イテレータは、コレクションのタイプに関係なく、任意のコレクションをトラバースするために使用できます。 リストイテレータは、arraylist、linkedlistなどのリストコレクションが実装