Pencacahan vs Iterator
Ada banyak struktur data yang bertindak sebagai koleksi di Jawa seperti Vektor, tabel Hash, dan kelas yang mengimplementasikan Java Collections Framework (mis. HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap, dan LinkedHashSet). Ada banyak cara untuk beralih melalui elemen individual dari objek di Jawa. Java menyediakan dua antarmuka untuk mempermudah tugas ini. Enumerasi 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 secara virtual menggandakan fungsi Enumerator (dalam Collections Framework).
Apa itu Pencacahan?
Enumerasi adalah antarmuka publik di Jawa, diperkenalkan pada 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 enumerasi memiliki dua metode. Metode hasMoreElements () akan menguji apakah enumerasi ini mengandung lebih banyak elemen dan nextElement () mengembalikan elemen berikutnya dalam urutan (jika ada setidaknya satu lagi yang harus dilakukan). Dengan kata lain, dengan memanggil nextElement () berturut-turut, programmer dapat mengakses elemen individual dalam seri. Misalnya, untuk mencetak semua elemen dalam Vector v1 menggunakan Enumerator, potongan 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 pengulangan melalui elemen objek koleksi yang mengimplementasikan kerangka kerja Collections (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 seri. Metode remove () dapat digunakan untuk menghapus elemen saat ini dari koleksi yang mendasarinya. Misalnya, untuk mencetak semua elemen dalam Vector v1 menggunakan Iterator, potongan kode berikut dapat digunakan.
Iterator i = v1.elements ();
While (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 iterating / enumerating melalui elemen-elemen dari seri, mereka memiliki perbedaan. Sebenarnya, Iterator, yang diperkenalkan setelah Pencacahan, menggantikan Pencacahan dalam kerangka Koleksi Java. Tidak seperti Pencacahan, Iterator aman-gagal. Ini berarti bahwa modifikasi bersamaan (ke koleksi yang mendasarinya) tidak diperbolehkan ketika Iterator digunakan. Ini sangat berguna dalam 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. Selain itu, iterator memiliki fungsionalitas tambahan untuk menghapus elemen selama iterasi (yang tidak mungkin menggunakan Enumerator). Jadi, jika ada kebutuhan untuk menghapus elemen dari koleksi, Iterator adalah satu-satunya opsi yang dapat dipertimbangkan.