Rumah  >  Artikel  >  Java  >  Iterator di Jawa

Iterator di Jawa

王林
王林asal
2024-08-30 15:11:37363semak imbas

Interator ialah antara muka yang digunakan untuk mengambil elemen satu demi satu dalam koleksi. Ia boleh didapati dalam pakej Java yang dipanggil Java. pakej guna. API koleksi melaksanakan kaedah iterator() dan oleh itu data boleh diambil daripada antara muka seperti Peta, Senarai, Baris Gilir, Deque dan Set, yang semuanya dilaksanakan daripada rangka kerja pengumpulan. Seperti namanya, iterator dalam Java melelar melalui koleksi objek.

Sintaks:

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Iterator<E> iterator()

Di bawah iterator ialah nama objek yang dicipta dengan memanggil kaedah iterator() antara muka koleksi. "koleksi" ialah nama objek koleksi.

Iterator iter = collection.iterator();

Kaedah Iterator dalam Java

Iterators mempunyai 4 kaedah dalam Java yang digunakan untuk melintasi koleksi dan mendapatkan maklumat yang diperlukan. Ia adalah seperti berikut:

  • hasNext(): Ini ialah kaedah yang mengembalikan boolean true jika lelaran mempunyai elemen seterusnya hadir dan boolean false jika tiada unsur hadir seterusnya.
  • seterusnya (): Kaedah ini mengembalikan nilai elemen yang ada dalam lelaran akan datang. Katakan tiada unsur dikembalikan dalam lelaran seterusnya, maka "NoSuchElementException" dilemparkan.
  • remove(): Kaedah ini mengalih keluar elemen semasa yang dikembalikan oleh iterator daripada koleksi. Sekiranya kaedah ini dipanggil sebelum kepada kaedah seterusnya(), ia membuang "IllegalStateException."
  • forEachRemaining(): Kaedah ini melaksanakan semua elemen yang tinggal dalam koleksi sehingga ia telah diproses atau sehingga pengecualian dilemparkan. Selain itu, ini adalah kaedah yang baru diperkenalkan oleh Oracle Corporation dalam keluaran Java SE 8 mereka.

Contoh Iterator dalam Java

Di bawah ialah contoh Iterator dalam Java:

Kod:

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();
}
}

Output:

Iterator di Jawa

Kaedah lelaran membuang pengecualian

Dalam senarai elemen, iterator boleh mengambil maklumat hanya pada elemen sedia ada. Oleh itu, ia akan ranap atau membuang pengecualian jika cuba mengakses elemen yang tidak terdapat dalam lelaran seterusnya. Di sini kita akan mengetahui pelbagai jenis pengecualian yang kita dapat semasa melaksanakan kaedah iterator.

1. kaedah seterusnya()

Semasa mengulangi set elemen dan mengambilnya dengan kaedah ini.

  • NoSuchElementException: Ini berlaku jika next() cuba mendapatkan semula elemen yang tidak wujud dalam senarai sekarang. Oleh itu, hasNext() sentiasa perlu digunakan sebelum memanggil next().

2. kaedah buang()

Terdapat 2 jenis pengecualian yang boleh berlaku di sini:

  • IllegalStateException: Jika kaedah remove() dipanggil sebelum kaedah next(), maka pengecualian ini dibuang. Ini kerana kaedah cuba untuk mengalih keluar elemen yang belum ditentukan oleh kaedah next() dan dengan itu gagal. Untuk menyelesaikan pengecualian ini, next() mesti dipanggil untuk merujuk kepada item pertama dan kemudian remove() boleh dipanggil untuk mengalih keluar yang sama daripada senarai.
  • UnsupportedOperationException: Pengecualian ini biasanya dilemparkan apabila mengubah suai objek senarai dengan menambah atau mengalih keluar operasi yang tidak menyokong pengubahsuaian. Sebagai contoh, apabila tatasusunan cuba ditukar kepada senarai oleh Arrays.asList membuang pengecualian ini. Ini kerana objek Senarai akan mempunyai saiz tetap kerana pembungkus menciptanya daripada ArrayList, dan oleh itu pengubahsuaian tidak akan dibenarkan. Untuk menyelesaikan isu ini, tukar objek Arrays.asList kepada ArrayList atau LinkedList sebelum melakukan sebarang operasi seperti tambah/buang pada objek yang sama.

Sintaks:

//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();
}
}

Kaedah ListIterator

Kaedah ini membenarkan lelaran melintasi kedua-dua arah objek koleksi. Berikut adalah sebahagian daripadanya:

  • 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:

Iterator di Jawa

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

Atas ialah kandungan terperinci Iterator di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Perintah JavaArtikel seterusnya:Perintah Java