Javaでのイテレータ実装のガイド

公開: 2020-06-11

Javaには、 Javaイテレータと呼ばれる、一連の要素から連続する要素を生成するために使用されるユーティリティがあります。 すべてのコレクションクラスによって実装されたJavaのこれらのイテレータ実装は、オブジェクトを返し、それがインターフェイスを開始します。 Javaコレクションフレームワークは、再利用可能なデータセットで実行されるクラスの組み合わせで構成されているため、このようなイテレーターインターフェイスを介して返されるオブジェクトは、コレクション内のすべての要素を移動できます。

実行する前に覚えておく必要のあるJavaイテレータの特定の特性があります。

  • Javaのコレクションフレームワークには、READおよびREMOVEコマンドの実行に役立つイテレータ()関数が装備されています。
  • 反復メソッドは、他のイテレータとは異なり、自動ループでnext()関数を使用して要素内を移動します。
  • 各イテレータは、すべての要素を1回だけ移動できます。シリーズの最後の側に到達したら、別のイテレータを取得します。

読む: Javaが開発者にとても人気がある6つの理由

目次

Javaコードでのイテレータ実装の実行

各フレームワークには返されるオブジェクトが固有であるため、このようなメソッドを使用して、次の方法で要素にアクセスできます。

  • iterator()メソッドを呼び出します。
  • ブール変数を返すブールhasNext()を呼び出すことができるループの作成。 変数に実際の値が設定されると、イテレーターはコレクション内を移動できます。
  • E next()関数を呼び出して、コレクション内の次の要素に移動します。
  • デフォルトのvoidremove()を使用して、イテレータを介して返される最後の要素の基になるコレクションを削除できます。
  • デフォルトのvoidforEachRemaining()関数は、コレクション全体の処理が完了するまで、イテレーターがすべての要素に対して任意の関数を実行するのに役立ちます。

Javaのイテレータ実装でhasNext()およびNext()関数を使用する

すでに知っているように、next()関数は、イテレータがすべてのコレクション要素を一度に1つずつ移動するのに役立ちます。 したがって、イテレータがコレクションの最後に到達すると、next()は例外を発生させます。 これが、next()の前にhasnext()関数を使用することで、イテレータがコレクションに沿った次のオブジェクトを確実に取得し、例外を取り除く理由です。

Object remove():object remove()関数を使用すると、イテレータによって移動され、next()によって返された最後のオブジェクトを削除して返すことができます。 前回のアクセス以降にオブジェクトに変更があった場合、関数IllegalStateException()が有効になります。

関数がどのように行われるかの簡単な例を次に示します。

ArrayList abc = new ArrayList();

イテレータxyz=xyz.iterator();

xyz.next();

xyz.remove;

xyz.remove();

xyz.next();

xyz.remove();

importjava.util。*;

クラスiteratorTrial

{{

public static void main(String [] arg)

}

リストtrialList=new ArrayList();

文字列trialArray[]= {“ Harry”、“ Jack”、“ Jacob”、“ Maggie”、“ George”};

for(int i = 0; i <trialArray.length; i ++)

{{

trialList.add(trialArray [i]);

}

イテレータxyz=trialList.iterator();

while(xyz.hasNext())

{{

System.out.println(xyz.next());

}}}

上記のコードから生成された出力は次のとおりです。

ハリー

ジャック

ジェイコブ

マギー

ジョージ

上記の例では、イテレータxyzがArrayList abc用に作成され、最初の要素と隣接するオブジェクトが削除されると、すばやく簡単に反復が実行されます。

また読む:初心者のための17の興味深いJavaプロジェクトのアイデアとトピック

Javaでのカスタムクラスイテレータの実装

ユーザー定義のカスタムクラスの場合、次のメソッドを使用して要素を反復処理できます。

  • カスタムクラスを設定および定義します。
  • コレクションクラスをカスタムクラスに割り当てて定義します。
  • このコレクションクラスでは、反復可能なインターフェイスをカスタムクラスを型パラメーターとして実装する必要があります。
  • 同じコレクションクラスがイテレータ()関数を実行できる必要があります。
  • Customクラスでこれらの命令に従うと、その要素に対してイテレータオブジェクトまたはEnhanced For Loop()を実行するように設定されます。

Javaでのイテレータ実装の長所と短所

  • すべてのコレクションクラスに適用可能
  • 安全なメソッドと操作を備えたCollectionAPIのユニバーサルカーソル

短所:

  • CREATEおよびUPDATE操作をサポートしていません
  • 反復は一方向にのみ発生します
  • ListIteratorとSplitteratorは、並列反復とバルクデータ反復を可能にするJavaの優れたカーソルです。

Javaでの列挙とイテレータの実装:類似点と非類似点

  • 列挙子と反復子はどちらもJavaカーソルであり、コレクションクラス要素を一度に1つずつ、一方向に反復処理するために使用できます。
  • 両方のカーソルがREADメソッドをサポートしています。

相違点:

  • 列挙型は、Java 1.0で最初に実行されたレガシーインターフェイスであり、Iteratorとは異なり、レガシーコレクションクラスに制限されています。
  • 列挙子はユニバーサルカーソルではないため、READ関数の実行に制限されたトリッキーな関数名があります。

また読む:インドのJava開発者給与:新入生と経験者向け

結論

皆さん、 Javaでイテレータの実装は以上です。 正しい方法で反復を開始する方法を今知っていることを願っています。

フルスタックソフトウェア開発の詳細に興味がある場合は、upGrad&IIIT-Bのフルスタックソフトウェア開発のPGディプロマをチェックしてください。これは、働く専門家向けに設計されており、500時間以上の厳格なトレーニング、9以上のプロジェクト、および割り当て、IIIT-B卒業生のステータス、実践的な実践的なキャップストーンプロジェクト、トップ企業との仕事の支援。

未来のキャリアに備える

業界で信頼されている学習-業界で認められた認定。
今すぐ登録@upGrad