Java - Bagaimana Menggunakan Iterator?

Selamat datang, para pemula pemrograman! Hari ini, kita akan melihat dunia menarik dari Iterators Java. Jangan khawatir jika Anda baru dalam pemrograman; saya akan mengarahkan Anda secara langkah demi langkah, seperti yang telah saya lakukan untuk ribuan murid selama tahun-tahun mengajar saya. Mari kita mulai perjalanan menarik ini bersama!

Java - Iterators

Apa Itu Iterator?

Bayangkan Anda memiliki sebuah kotak besar penuh dengan bata Lego berwarna-warni. Iterator seperti seorang asisten magis yang memungkinkan Anda untuk melihat setiap bata satu per satu, tanpa perlu mengeluarkan seluruh kotak. Itu adalah cara untuk mengakses elemen dalam sebuah koleksi secara berurutan, tanpa perlu mengetahui struktur dasar dari koleksi itu.

Mengapa Menggunakan Iterators?

Iterators sangat berguna karena mereka menyediakan cara standar untuk menelusuri jenis-jenis koleksi yang berbeda (seperti list, set, atau map) menggunakan interface yang sama. Ini berarti Anda dapat menulis kode yang bekerja dengan banyak jenis koleksi yang berbeda tanpa mengubah logika penelusuran Anda.

Interface Iterator

Dalam Java, interface Iterator adalah bagian dari Java Collections Framework. Itu mendeklarasikan metode-metode berikut:

Metode Deskripsi
hasNext() Mengembalikan true jika masih ada elemen lain dalam koleksi
next() Mengembalikan elemen berikutnya dalam koleksi
remove() Menghapus elemen terakhir yang dikembalikan oleh next() (operasi opsional)

Penggunaan Dasar Iterator

Marilah kita mulai dengan contoh sederhana untuk melihat bagaimana Iterator bekerja:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class IteratorExample {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");

Iterator<String> iterator = fruits.iterator();

while (iterator.hasNext()) {
String fruit = iterator.next();
System.out.println(fruit);
}
}
}

Dalam contoh ini, kita membuat daftar buah-buahan dan kemudian menggunakan Iterator untuk menelusuri setiap buah dan mencetaknya. Mari kitauraikan:

  1. Kita membuat ArrayList dari string dan menambahkan beberapa buah-buahan.
  2. Kita mendapatkan Iterator dari daftar menggunakan metode iterator().
  3. Kita menggunakan perulangan while untuk memeriksa jika masih ada elemen lain (hasNext()).
  4. Dalam loop, kita menggunakan next() untuk mendapatkan buah berikutnya dan mencetaknya.

Ketika Anda menjalankan kode ini, Anda akan melihat setiap buah dicetak di baris yang berbeda. Itu seperti Iterator kita mengambil setiap buah dari kotak dan menunjukkannya ke kita satu per satu!

Interface ListIterator

Untuk list, Java menyediakan iterator yang ditingkatkan disebut ListIterator. Itu mengembangkan interface Iterator dan menambahkan fungtionalitas lebih banyak:

Metode Deskripsi
add(E e) Menyisipkan elemen yang ditentukan ke dalam list
hasPrevious() Mengembalikan true jika masih ada elemen sebelumnya
previous() Mengembalikan elemen sebelumnya dalam list
nextIndex() Mengembalikan indeks elemen yang akan dikembalikan oleh next()
previousIndex() Mengembalikan indeks elemen yang akan dikembalikan oleh previous()
set(E e) Mengganti elemen terakhir yang dikembalikan oleh next() atau previous()

Menggunakan ListIterator

Marilah kita lihat bagaimana kita dapat menggunakan ListIterator untuk menelusuri list dalam dua arah:

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class ListIteratorExample {
public static void main(String[] args) {
List<String> colors = new ArrayList<>();
colors.add("Red");
colors.add("Green");
colors.add("Blue");

ListIterator<String> listIterator = colors.listIterator();

System.out.println("Arah maju:");
while (listIterator.hasNext()) {
System.out.println(listIterator.next());
}

System.out.println("\nArah mundur:");
while (listIterator.hasPrevious()) {
System.out.println(listIterator.previous());
}
}
}

Dalam contoh ini, kita menggunakan ListIterator untuk menelusuri list warna kita maju dan kemudian mundur. Itu seperti berjalan melalui bata Lego kita dari awal ke akhir, dan kemudian kembali lagi!

Mengubah Koleksi Saat Iterating

Salah satu hal yang menarik tentang Iterators adalah mereka memungkinkan Anda untuk mengubah koleksi saat Anda sedang mengiterasinya. Marilah kita lihat contoh di mana kita menghapus elemen yang memenuhi kriteria tertentu:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class IteratorRemoveExample {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
numbers.add(i);
}

Iterator<Integer> iterator = numbers.iterator();
while (iterator.hasNext()) {
Integer number = iterator.next();
if (number % 2 == 0) {
iterator.remove();
}
}

System.out.println("Bilangan ganjil: " + numbers);
}
}

Dalam contoh ini, kita menghapus semua bilangan genap dari list kita. Kita menggunakan metode remove() dari Iterator untuk menghapus elemen dengan aman saat mengiterasi. Jika kita mencoba menghapus elemen langsung dari list saat mengiterasi, kita akan mendapat ConcurrentModificationException. Itu seperti menghapus bata Lego tertentu dari kotak kita saat kita sedang melihatnya, tanpa mengganggu proses penyortiran kita!

Kesimpulan

Iterators adalah alat kuat dalam Java yang memungkinkan kita untuk menelusuri koleksi secara efisien dan aman. Mereka menyediakan cara uniform untuk mengakses elemen dalam jenis-jenis koleksi yang berbeda, membuat kode kita lebih fleksibel dan dapat digunakan kembali.

Ingat, pemrograman adalah seperti membangun dengan bata Lego. Iterators adalah salah satu dari banyak alat menarik yang Anda miliki. Terus latih, terus jelajahi, dan segera Anda akan membangun hal-hal menakjubkan dengan Java!

Selamat coding, para pemrogram masa depan! ??‍??‍?

Credits: Image by storyset