Pencacahan vs iterator
Ada banyak struktur data yang bertindak sebagai koleksi di Java seperti vektor, tabel hash dan kelas yang mengimplementasikan kerangka kerja koleksi java (i.e. Hashmap, Hashset, ArrayList, Treeset, TreeMap, LinkedList, LinkedHashMap dan LinkedHashset). Ada banyak cara untuk beralih melalui unsur -unsur individu objek di Java. Java menyediakan dua antarmuka untuk membuat tugas ini lebih mudah. Pencacahan dan Iterator adalah dua antarmuka yang ditemukan di Java.Paket util yang menyediakan fungsionalitas untuk menghitung melalui urutan atau objek dengan satu set item. Pencacah diperkenalkan di JDK 1.0 dan iterator yang diperkenalkan di JDK 1.2 Hampir menduplikasi fungsionalitas enumerator (dalam kerangka koleksi).
Apa itu Pencacahan?
Pencacahan adalah antarmuka publik di Java, diperkenalkan di JDK 1.0, yang memberikan kemampuan untuk menghitung melalui urutan elemen. Itu ditemukan di bawah java.paket util. Saat antarmuka enumerasi diimplementasikan oleh suatu objek, objek itu dapat menghasilkan urutan elemen. Antarmuka enumerasi 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 untuk pergi). Dengan kata lain, dengan menelepon NextElement () secara berturut -turut, programmer dapat mengakses elemen individu dalam seri ini. Misalnya, untuk mencetak semua elemen di Vector V1 menggunakan enumerator, cuplikan kode berikut dapat digunakan.
Pencacahan E = V1.elemen ();
Sementara (e.hasmoreLements ())
Sistem.keluar.println (e.nextElement ());
Pencacah juga dapat digunakan untuk menentukan aliran input ke objek SequenceInputStream.
Apa itu Iterator?
Iterator adalah antarmuka publik di Java.Paket Util, yang memungkinkan iterasi melalui elemen -elemen objek koleksi yang mengimplementasikan kerangka kerja koleksi (seperti arraylist, linkedlist, dll.). Ini diperkenalkan di JDK 1.2 dan mengganti pencacah dalam kerangka koleksi java. Iterator memiliki tiga metode. Metode HasNext () menguji apakah ada elemen yang tersisa dalam koleksi dan metode berikutnya () mengembalikan elemen berikutnya dalam seri. Metode lepas () dapat digunakan untuk menghapus elemen saat ini dari koleksi yang mendasarinya. Misalnya, untuk mencetak semua elemen di vektor v1 menggunakan iterator, cuplikan kode berikut dapat digunakan.
Iterator I = V1.elemen ();
Ketika saya.hasnext ())
Sistem.keluar.println (e.Berikutnya());
Apa perbedaan antara enumerasi dan iterator?
Meskipun, enumerasi dan iterator adalah dua antarmuka yang ditemukan di java.Paket util, yang memungkinkan iterasi/menyebutkan melalui elemen -elemen seri, mereka memiliki perbedaan. Sebenarnya, iterator, yang diperkenalkan setelah enumerasi, menggantikan enumerasi dalam kerangka koleksi java. Tidak seperti enumerasi, iterator gagal-gagal. Ini berarti bahwa modifikasi bersamaan (ke koleksi yang mendasarinya) tidak diperbolehkan saat Iterator digunakan. Ini sangat berguna di lingkungan multi-threaded 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 elemen penghapusan selama iterasi (yang tidak dimungkinkan menggunakan enumerator). Jadi, jika ada kebutuhan untuk menghapus elemen dari koleksi, Iterator adalah satu -satunya pilihan yang dapat dipertimbangkan.