ホームページ  >  記事  >  Java  >  Javaのイテレータ

Javaのイテレータ

王林
王林オリジナル
2024-08-30 15:11:37315ブラウズ

イテレーターは、コレクション内の要素を 1 つずつフェッチするために使用されるインターフェースです。これは、Java と呼ばれる Java パッケージで入手できます。ユーティリティパッケージ。コレクション API は iterator() メソッドを実装しているため、Map、List、Queue、Deque、Set などのインターフェイスからデータを取得できます。これらはすべてコレクション フレームワークから実装されています。名前が示すように、Java のイテレーターはオブジェクトのコレクションを反復処理します。

構文:

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

Iterator<E> iterator()

イテレータの下には、コレクションインターフェイスの iterator() メソッドを呼び出して作成されたオブジェクトの名前が表示されます。 「コレクション」はコレクション オブジェクトの名前です。

Iterator iter = collection.iterator();

Java の反復子のメソッド

Java のイテレータには、コレクションを横断して必要な情報を取得するために使用される 4 つのメソッドがあります。それらは次のとおりです:

  • hasNext(): これは、反復に次の要素が存在する場合はブール値 true を返し、次に要素が存在しない場合はブール値 false を返すメソッドです。
  • next (): このメソッドは、次の反復に存在する要素の値を返します。次の反復で要素が返されないとすると、「NoSuchElementException」がスローされます。
  • remove(): このメソッドは、反復子によって返された現在の要素をコレクションから削除します。このメソッドが next() メソッドの前に呼び出された場合、「IllegalStateException」がスローされます。
  • forEachRemaining(): このメソッドは、処理が完了するか例外がスローされるまで、コレクション内の残りのすべての要素を実行します。また、これは Oracle Corporation が Java SE 8 リリースで新たに導入したメソッドです。

Java のイテレータの例

以下は Java のイテレーターの例です:

コード:

import java.io.*;
import java.util.*;
public class IteratorExample {
public static void main(String[] args)
{
ArrayList<String> val = new ArrayList<String>();
val.add("Iteration started");
val.add("Printing iteration1");
val.add("Printing iteration2");
val.add("Printing iteration3");
val.add("End of iteration");
// Iterates through the list
Iterator iter = val.iterator();
System.out.println("The values of iteration are as follows: ");
while (iter.hasNext())
System.out.println(iter.next() + " ");
System.out.println();
}
}

出力:

Javaのイテレータ

反復子メソッドが例外をスローする

要素のリストでは、反復子は既存の要素に関する情報のみをフェッチできます。したがって、次の反復に存在しない要素にアクセスしようとすると、クラッシュするか例外がスローされます。ここでは、反復子メソッドの実装中に発生するさまざまな種類の例外について説明します。

1. next() メソッド

一連の要素を反復処理し、このメソッドによって要素をフェッチする間。

  • NoSuchElementException: これは、next() が現在のリストに存在しない要素を取得しようとした場合に発生します。したがって、next() を呼び出す前に常に hasNext() を使用する必要があります。

2. Remove() メソッド

ここでは 2 種類の例外が発生する可能性があります:

  • IllegalStateException: next() メソッドの前に Remove() メソッドが呼び出された場合、この例外がスローされます。これは、このメソッドが next() メソッドでまだ指定されていない要素を削除しようとして失敗するためです。この例外を解決するには、next() を呼び出して最初の項目を参照し、その後、remove() を呼び出して同じ項目をリストから削除する必要があります。
  • UnsupportedOperationException: この例外は通常、変更をサポートしていない操作を追加または削除してリスト オブジェクトを変更するときにスローされます。たとえば、Arrays.asList によって配列をリストに変換しようとすると、この例外がスローされます。これは、ラッパーが ArrayList から List オブジェクトを作成するため、List オブジェクトのサイズが固定され、変更が許可されないためです。この問題を解決するには、追加/削除などの操作を実行する前に、Arrays.asList を ArrayList または LinkedList オブジェクトに変換します。

構文:

//ArrayList is created from the list having fixed size
list = new ArrayList<String>(list);
Iterator<String> iter = list.iterator();
while(iter.hasNext()){
if( iter.next().equals("First iteration") ){
iter.remove();
}
}

ListIterator のメソッド

これらのメソッドを使用すると、反復子はコレクション オブジェクトの両方向にトラバースできます。以下にその一部を示します:

  • add(): This method inserts the object value given and is returned when the next() method is called.
  • hasNext(): This method is the same as the one mentioned in iterator types, which returns Boolean true/false depending on the next element having a value or not.
  • hasPrevious(): This method is opposite to hasNext() and returns Boolean true if the list has a previous element and vice versa.
  • next(): This method retrieves the next element from the given list.
  • previous(): This method retrieves the previous element from the list.
  • remove(): This deletes the present element from the list. When this method is called either before the next() or previous() function, it throws “IllegalStateException”.

Example for ListIterator

Below is an example in ArrayList for ListIterator.

Code:

import java.util.*;
public class IteratorExample {
public static void main(String args[]) {
// Creating an array list
ArrayList array = new ArrayList();
// add elements to the array list
array.add("First element");
array.add("Second element");
array.add("Third element");
array.add("Fourth element");
array.add("Fifth element");
array.add("Sixth element");
// Displaying elements of an array
System.out.println("Printing input of the array: ");
Iterator iter = array.iterator();
while(iter.hasNext()) {
Object value = iter.next();
System.out.println(value + " ");
}
System.out.println();
// To update the elements of iteration
ListIterator listiter = array.listIterator();
while(listiter.hasNext()) {
Object value = listiter.next();
listiter.set(value + "+");
}
System.out.print("Updated array elements are as follows: ");
iter = array.iterator();
while(iter.hasNext()) {
Object value = iter.next();
System.out.print(value + " ");
}
System.out.println("\n");
// To display the contents in backward direction
System.out.println("Printing elements in backward direction: ");
while(listiter.hasPrevious()) {
Object value = listiter.previous();
System.out.print(value + " ");
}
System.out.println();
}
}

Output:

Javaのイテレータ

Advantages of Iterators in Java

Below are the advantages of Iterators:

  1. It supports all classes under the Collection interface.
  2. The methods of an iterator are quite simple and easy to understand and implement.
  3. Elements of a Collection can be easily modified (add/remove) using Iterators.
  4. Accessing elements through Iterators will not lead to run-time exceptions.
  5. Data handling is efficient.
  6. It can iterate over various variables concurrently by holding each variable’s state of iteration separately.

Limitations of Iterators in Java

Below are the limitations of Iterators:

  1. Java iterator can iterate only in one direction, i.e. forward direction.
  2. It cannot be used to iterate between two different data structures concurrently.
  3. It cannot be used to backtrace an element.
  4. It does not allow modification of the structure of the element being iterated as it stores its position.
  5. It might be inefficient in certain cases were traversing through the elements directly is more efficient.

Conclusion

Iterators are the most commonly used method to retrieve elements from the collection interface. It is called Universal Java Cursor as it is applicable across all the Collection classes.

Recommended Article

This is a guide to Iterator in Java. Here we discuss methods and examples of Iterator in Java along with its Limitations and Advantages. You can also go through our other suggested articles to learn more –

  1. Overriding in Java
  2. Iterators in C#
  3. Java Collection Interview Questions
  4. Java Iterate Map

以上がJavaのイテレータの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:Javaコマンド次の記事:Javaコマンド