Pencacahan vs Iterator
Ada banyak struktur data yang bertindak sebagai koleksi di Java seperti Vektor, tabel Hash, dan kelas yang mengimplementasikan Java Collections Framework (yaitu HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap, dan LinkedHashSet). Ada banyak cara untuk melakukan iterasi melalui elemen individual objek di Java. Java menyediakan dua antarmuka untuk mempermudah tugas ini. Enumeration dan Iterator adalah dua antarmuka yang ditemukan di paket java.util yang menyediakan fungsionalitas untuk menghitung melalui urutan atau objek dengan sekumpulan item. Enumerator diperkenalkan di JDK 1.0 dan Iterator yang diperkenalkan di JDK 1.2 secara virtual menduplikasi fungsionalitas Enumerator (dalam Collections Framework).
Apa itu Pencacahan?
Enumerasi adalah antarmuka publik di Java, diperkenalkan di JDK 1.0, yang menyediakan kemampuan untuk menghitung melalui urutan elemen. Itu ditemukan di bawah paket java.util. Ketika antarmuka Pencacahan diimplementasikan oleh suatu objek, objek tersebut dapat menghasilkan urutan elemen. Antarmuka pencacahan memiliki dua metode. Metode hasMoreElements () akan menguji apakah enumerasi ini berisi lebih banyak elemen dan nextElement () mengembalikan elemen berikutnya dalam urutan (jika ada setidaknya satu lagi yang tersisa). Dengan kata lain, dengan memanggil nextElement () berturut-turut, programmer dapat mengakses elemen individu dalam rangkaian. Misalnya, untuk mencetak semua elemen di Vector v1 menggunakan Pencacah, cuplikan kode berikut dapat digunakan.
Pencacahan e = v1.elements ();
While (e.hasMoreLements ()) {
System.out.println (e.nextElement ());
}
Enumerator juga dapat digunakan untuk menentukan aliran input ke objek SequenceInputStream.
Apa itu Iterator?
Iterator adalah antarmuka publik dalam paket Java.util, yang memungkinkan iterasi melalui elemen objek koleksi yang mengimplementasikan framework Collections (seperti ArrayList, LinkedList, dll.). Ini diperkenalkan di JDK 1.2 dan menggantikan Pencacah dalam Kerangka Koleksi Java. Iterator memiliki tiga metode. Metode hasNext () menguji apakah ada elemen yang tersisa dalam koleksi dan metode next () mengembalikan elemen berikutnya dalam rangkaian. Metode remove () bisa digunakan untuk menghapus elemen saat ini dari koleksi yang mendasarinya. Misalnya, untuk mencetak semua elemen di Vector v1 menggunakan Iterator, cuplikan kode berikut dapat digunakan.
Iterator i = v1.elements ();
Sementara (i.hasNext ()) {
System.out.println (e.next ());
}
Apa perbedaan antara Pencacahan dan Iterator?
Meskipun, Enumerasi dan Iterator adalah dua antarmuka yang ditemukan dalam paket java.util, yang memungkinkan iterasi / enumerasi melalui elemen rangkaian, keduanya memiliki perbedaan. Sebenarnya, Iterator, yang diperkenalkan setelah Pencacahan, menggantikan Enumerasi dalam kerangka Koleksi Java. Tidak seperti Pencacahan, Iterator aman dari kegagalan. Ini berarti bahwa modifikasi serentak (ke koleksi yang mendasarinya) tidak diizinkan saat Iterator digunakan. Ini sangat berguna dalam lingkungan multi-utas di mana selalu ada risiko modifikasi bersamaan. Jika terjadi modifikasi serentak, objek Iterator akan menampilkan ConcurrentModificationException. Iterator memiliki nama metode yang lebih pendek dibandingkan dengan Enumerator. Selanjutnya,iterator memiliki fungsionalitas tambahan untuk menghapus elemen selama iterasi (yang tidak dimungkinkan menggunakan Enumerator). Jadi, jika ada kebutuhan untuk menghapus elemen dari koleksi, Iterator adalah satu-satunya pilihan yang dapat dipertimbangkan.