あなたが取り組んでいる場合 シーケンスを印刷したいとすると、JavaのIteratorが登場します。このようにして、すべての行にprintステートメントを追加しなくてもシーケンスを取得できます。それでは、イテレータについて学びましょう。 。
このモジュールで取り上げるトピックは次のとおりです。
始めましょう!
DevOpsのPuppetとは
イテレータとは何ですか?
Javaは主に4つの異なるカーソルをサポートします。それらはすなわち:
- 列挙
- イテレータ
- ListIterator
- スプリッター
これらのJavaカーソルには、それぞれ長所と短所があります。この記事では、イテレータに焦点を当てます。
さて、Javaのイテレータとは何ですか?
イテレータ コレクションフレームワークに属するインターフェイスです。これにより、コレクションをトラバースし、データ要素にアクセスして、コレクションのデータ要素を削除できます。
また、あらゆるものに適用できるため、ユニバーサルイテレータと見なされます。 オブジェクト。イテレータを使用すると、読み取り操作と削除操作の両方を実行できます。これはの改良版です 列挙 要素の除去可能性の追加機能を備えています。
Javaイテレータメソッド
Javaイテレータには合計4つのメソッドがあります。それらを詳しく理解しましょう。
メソッド | 説明 |
---|---|
forEachRemaining(Consumeraction) | すべての要素が処理されるまで、および処理されない限り、各要素に対してアクションを実行します。また、アクションによって例外がスローされるまで。 |
hasNext() | この 戻り値 反復中に多数の要素が検出された場合は真の値。 |
次() | この 戻り値 反復中に次に指定された要素。 |
削除する() | この方法r現在の要素を削除します。投げる IllegalStateException next()の呼び出しが先行していないremove()を呼び出そうとした場合。 |
ブールhasNext() | 反復にさらに要素がある場合、これはtrueを返します。 |
例:
class Method {public static void main(String [] args)ArrayList list = new ArrayList()list.add( 'E')list.add( 'D')list.add( 'U')list.add( 'R ')list.add(' E ')list.add(' K ')list.add(' A ')//リストをトラバースするイテレーターIterator iterator = list.iterator()System.out.println('リスト要素: ')while(iterator.hasNext())System.out.print(iterator.next()+' ')System.out.println()}}
出力:EDUREKA
JavaのListIteratorを見てみましょう。
JavaのListIterator
php文字列を配列に変換します
ListIterator in Javaは、ユーザーがコレクションを両方向にトラバースできるようにするイテレーターです。次のメソッドが含まれています。
メソッド | 方法と説明 |
---|---|
void add(Object obj) | next()への次の呼び出しによって返される要素の前のリストにobjを挿入します。 |
ブールhasNext() | 次の要素がある場合はtrueを返します。それ以外の場合は、falseを返します。 |
boolean hasPrevious() | 前の要素がある場合はtrueを返します。それ以外の場合は、falseを返します。 |
オブジェクトnext() | 次の要素を返します。次の要素がない場合、NoSuchElementExceptionがスローされます。 |
int nextIndex() | 次の要素のインデックスを返します。次の要素がない場合は、リストのサイズを返します。 |
オブジェクトprevious() | 前の要素を返します。前の要素がない場合、NoSuchElementExceptionがスローされます。 |
int previousIndex() | 前の要素のインデックスを返します。前の要素がない場合は、-1を返します。 |
void remove() | 現在の要素をリストから削除します。 next()またはprevious()が呼び出される前にremove()が呼び出されると、IllegalStateExceptionがスローされます。 |
void set(Object obj) | objを現在の要素に割り当てます。これは、next()またはprevious()のいずれかの呼び出しによって最後に返される要素です。 |
例:
public class Lists {public static void main(String args []){//配列リストを作成するArrayList al = new ArrayList()//配列リストに要素を追加するal.add( 'E')al.add( 'D ')al.add(' U ')al.add(' R ')al.add(' E ')al.add(' K ')al.add(' A ')//イテレータを使用してal System.out.print( 'alの元の内容:')Iterator itr = al.iterator()while(itr.hasNext()){Object element = itr.next()System.out.print(element + '' )} System.out.println()//繰り返されるオブジェクトを変更するListIterator litr = al.listIterator()while(litr.hasNext()){Object element = litr.next()litr.set(element + '+') } System.out.print( 'alの変更された内容:')itr = al.iterator()while(itr.hasNext()){Object element = itr.next()System.out.print(element + '') } System.out.println()//ここで、リストを後方に表示しますSystem.out.print( 'Modified list backs:')while(litr.hasPrevious()){Object element = litr.previous()System.out。 print(element + '')} System.out.println()}}
出力:
元のアルの内容:E D U R E K A
変更アルの内容:IS+D+U+R+IS+に+ A +
変更後方にリストする:に+に+IS+R+U+D+ AND +
数の階乗java
それでは、Javaでのこのイテレータインターフェイスの利点と制限を見てみましょう。
Javaでのイテレータの利点
Javaのイテレータには次の利点があります。
- これらのイテレータは、任意のコレクションクラスに使用できます。
- Javaのイテレータは両方をサポートします 読んだ 及び 削除する オペレーション。
- 使用している場合 forループ それはいけません コレクションを更新(追加/削除)しますが、イテレータを使用すると、コレクションを簡単に更新できます。
- これは、CollectionAPIのユニバーサルカーソルです。
- メソッド名は非常に単純で、非常に使いやすいです。
Javaでのイテレータの制限
Javaのイテレータには、次の欠点があります。
- 順方向反復、つまり単方向反復子のみを実行できます。
- 新しい要素の交換と追加は、イテレータではサポートされていません。
- ListIteratorは最も強力なイテレーターですが、Listで実装されたクラスにのみ適用できます。したがって、これはユニバーサルイテレータではありません。
- CRUD操作を使用する場合、作成および更新操作はサポートされていません。
- Spliteratorと比較すると、要素を並列に反復することはできません。これは、順次反復のみをサポートすることを意味します。
- 大量のデータを反復するためのパフォーマンスの向上はサポートされていません。
これで、Javaのイテレータがどのように機能するかを学んだこの記事の終わりになります。このチュートリアルで共有されているすべてのことを明確に理解してください。
「Javaのイテレータ」に関するこの記事が関連していると感じた場合は、 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社が世界中に広がっています。
私たちはあなたの旅のすべてのステップであなたを助けるためにここにいます、これに加えて、私たちはJava開発者になりたい学生と専門家のために設計されたカリキュラムを考え出します。このコースは、Javaプログラミングをすぐに開始できるように設計されており、HibernateやSpringなどのさまざまなJavaフレームワークに加えて、コアと高度なJavaの両方の概念についてトレーニングします。
ご不明な点がございましたら、「IteratorinJava」のコメント欄にご質問ください。喜んでお答えいたします。