Pencacahan vs Iterator
Ada banyak struktur data yang bertindak sebagai koleksi di Java seperti Vektor, tabel Hash, dan kelas yang mengimplementasikan Kerangka Koleksi Java (yaitu HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap dan LinkedHashSet). Ada banyak cara untuk melakukan iterasi melalui elemen individu dari objek di Jawa. Java menyediakan dua antarmuka untuk mempermudah tugas ini. Enumeration dan Iterator adalah dua antarmuka yang ditemukan dalam paket java.util yang menyediakan fungsionalitas untuk menghitung melalui urutan atau objek dengan satu set item. Enumerator diperkenalkan di JDK 1.0 dan Iterator yang diperkenalkan di JDK 1.2 hampir menduplikasi fungsionalitas Enumerator (dalam Kerangka Koleksi).
Apa itu Pencacahan?
Enumeration 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 Enumerasi diimplementasikan oleh suatu objek, objek itu 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 setidaknya ada satu elemen lagi). Dengan kata lain, dengan memanggil nextElement() berturut-turut, programmer dapat mengakses elemen individu dalam seri. Misalnya, untuk mencetak semua elemen dalam Vector v1 menggunakan Enumerator, cuplikan kode berikut dapat digunakan.
Pencacahan e=v1.elements();
Sementara(e.hasMoreLements()){
System.out.println(e.nextElement());
}
Enumerator juga dapat digunakan untuk mendefinisikan 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 kerangka Koleksi (seperti ArrayList, LinkedList, dll.). Ini diperkenalkan di JDK 1.2 dan menggantikan Enumerator dalam Java Collections Framework. Iterator memiliki tiga metode. Metode hasNext() menguji apakah ada elemen yang tersisa dalam koleksi dan metode next() mengembalikan elemen berikutnya dalam rangkaian. Metode remove() dapat 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 Enumerasi dan Iterator?
Meskipun, Enumeration dan Iterator adalah dua antarmuka yang ditemukan dalam paket java.util, yang memungkinkan iterasi/enumerasi melalui elemen seri, mereka memiliki perbedaan. Sebenarnya, Iterator, yang diperkenalkan setelah Enumeration, menggantikan Enumeration dalam kerangka Java Collections. Tidak seperti Enumeration, Iterator aman dari kegagalan. Ini berarti bahwa modifikasi bersamaan (pada koleksi yang mendasarinya) tidak diperbolehkan saat Iterator digunakan. Ini sangat berguna di lingkungan multi-utas di mana selalu ada risiko modifikasi bersamaan. Jika terjadi modifikasi bersamaan, objek Iterator akan melempar ConcurrentModificationException. Iterator memiliki nama metode yang lebih pendek dibandingkan dengan Enumerator. Selanjutnya, iterator memiliki fungsionalitas tambahan untuk menghapus elemen selama iterasi (yang tidak mungkin dilakukan menggunakan Enumerator). Jadi, jika ada kebutuhan untuk menghapus elemen dari koleksi, Iterator adalah satu-satunya pilihan yang dapat dipertimbangkan.