Hai! Dalam pelajaran hari ini, kita akan berbicara tentang Java Iterator. Bayangkan Anda pergi ke perpustakaan, dan Anda ingin mencari buku tertentu. Bagaimana Anda melakukannya? Jika non-fiksi, ada Sistem Desimal Dewey. Jika itu fiksi, mereka diurutkan berdasarkan abjad berdasarkan nama belakang mereka. Apa pun yang Anda cari, pada titik tertentu, Anda harus membaca buku satu per satu sampai Anda menemukan apa yang Anda cari. Setiap kali Anda memiliki kumpulan barang di Java, apakah itu disimpan dalam Array , ArrayList , Queue , atau List , bagaimana Anda menemukan nilai tertentu? Pada titik tertentu, Anda harus melalui setiap elemen satu per satu. Inilah gunanya iterator Java.Cara Menggunakan Java Iterator: Tutorial Singkat - 1

Apa itu Iterator di Jawa

Apa iterator di Jawa? Ini adalah cara melihat setiap elemen dalam koleksi. Dan dengan koleksi, yang kami maksud adalah apa saja di kelas Koleksi . Ini termasuk:
  • ArrayList
  • HashSet
  • LinkedHashSet
  • LinkedList
  • PriorityQueue
  • Vektor
  • dan banyak lagi…
Ini juga menyertakan berbagai antarmuka untuk kelas tersebut, seperti Set , List , Queue , Dequeue , dan Sorted Set , untuk beberapa nama. Iterator<E> adalah metode antarmuka publik dari kelas Interface Iterator<E> . Itu dibawa di Java 1.2 dan menggantikan Pencacahan sebagai cara untuk memeriksa elemen berurutan dalam koleksi.

Mengapa Anda Tidak Harus Menggunakan For Loops sebagai Iterator di Java

Salah satu cara pertama yang diajarkan kepada setiap orang untuk melakukan iterasi melalui koleksi di Java adalah untuk satu putaran. Ini terlihat seperti ini:

class Main {
  public static void main(String[] args) {
    int exampleArray[] = new int[10];

    //fill array with data

    for(int x = 0; x < exampleArray.length; x++) {
      System.out.println("Content of element " + x + "is: " + exampleArray[x]);
    }
  }
}
Outputnya akan menjadi daftar yang berbunyi:

Content of element 0 is: 0
Content of element 1 is: 1
Content of element 2 is: 2
etc.…
Ini memang ada gunanya, tetapi apa yang terjadi jika koleksi tidak menyimpan elemen dalam sistem berbasis indeks? Misalnya, Set s tidak memiliki urutan secara normal. Jadi disarankan untuk keluar dari praktik menggunakan loop for sebagai iterator di Java dan berlatih menggunakan kelas Iterator<E> sebagai gantinya. Berikut adalah beberapa contoh iterator java.

Cara menggunakan Iterator di Jawa

Berikut adalah beberapa contoh cara menggunakan iterator di Java. Saat menggunakan kelas iterator, ada tiga cara untuk melintasi koleksi. Anda dapat menggunakan perulangan while() , perulangan for() , dan perulangan forEach() . Perhatikan bahwa for loop ini berbeda dari yang kita bicarakan sebelumnya. Berikut adalah tiga contoh iterator java yang berbeda. Pertama, mari siapkan Koleksi untuk melakukan iterasi.

import java.util.*; // imports ArrayList, Collection and Iterator

class Main {
  public static void main(String[] args) {
    Collection<String> example = new ArrayList<String>();

    example.add("Item 1");
    example.add("Item 2");
    example.add("Item 3");
    example.add("Item 4");
  }
}
Ini adalah Koleksi sederhana yang terdiri dari ArrayList tempat kami memuat empat item. Sekarang mari kita lihat tiga metode menggunakan kelas Iterator untuk melintasi ArrayList .

Sementara() lingkaran


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

while (iterator.hasNext()) {
   System.out.println("Element Value= " + iterator.next());
}
Loop while() ini menggunakan metode Boolean .hasNext() dari kelas Iterator untuk memeriksa apakah ada elemen yang akan datang. Jika prasyaratnya benar, maka dilanjutkan. Jika kembali sebagai false, maka loop berakhir. Bagian kuncinya di sini adalah bahwa metode .hasNext() dan .next() keduanya melakukan pemeriksaan awal pada elemen pertama. Jika Collection kosong dan tidak ada elemen pertama, maka metode mengembalikan false untuk .hasNext() dan akan melontarkan NoSuchElementException untuk metode .next() .

Untuk putaran


for (Iterator<String> iterator = example.iterator(); iterator.hasNext();) {
  System.out.println("Element Value= " + iterator.next());
}
Ini terlihat seperti for loop yang lebih tradisional. Ia menggunakan metode .hasNext() sebagai bagian pemeriksaan kondisi dan perubahan. Inisialisasi adalah panggilan ke Iterator.

Untuk: Setiap putaran


for (String s : example) {
  System.out.println("Element Value= " + s);
}
For :Each loop adalah for loop, tetapi jika Anda tidak tahu cara membacanya, mungkin akan sedikit membingungkan. Sintaks For:Each loop adalah for (data_type variableName : collectionName){ body} . Ini untuk: setiap loop memang memiliki beberapa kekurangan. Pertama, hanya dapat melintasi koleksi dalam satu arah. Kedua, Anda harus mengulangi setiap elemen. Anda tidak dapat melewatkan salah satu dari mereka. Tetapi sebagai iterator daftar yang nyaman di Jawa, ini adalah pilihan terbaik. Di sisi positifnya, for:each loop sangat mudah dibaca dan begitu Anda mengetahuinya, sulit untuk salah. Jika Anda bertanya-tanya apa output dari tiga loop iterator, semuanya sama:

Element Value= Item 1
Element Value= Item 2
Element Value= Item 3
Element Value= Item 4 

Cara menggunakan Iterator di Java For Maps

Maps adalah cara yang populer untuk menyimpan data, tetapi karena tidak memperluas Collection , Anda tidak dapat menggunakan iterator sebelumnya untuk melintasi peta secara langsung. Jadi bagaimana Anda menggunakan iterator di Java untuk melewati Map s dan HashMap s? Ada empat metode iterator peta Java yang bagus. Kami akan membahasnya satu per satu. Pertama, mari muat peta dengan serangkaian nilai.

import java.util.*; //imports Map and HashMap

class Main {
  public static void main(String[] args) {
    Map<String, String> example = new HashMap<String, String>();

    example.put("alpha", "one");
    example.put("beta", "two");
    example.put("gamma", "three");

  }
}

Metode Java Hashmap Iterator: forEach(action)


example.forEach((k,v) -> System.out.println("Key: "+ k + ", Value: " + v));
Metode ini menggunakan ekspresi lambda untuk melakukan iterasi. Operator lambda adalah metode forEach() , dan body mencetak nilainya. Ini menggunakan beberapa operator parameter. Ini adalah metode tercepat dan terbersih untuk iterator peta di Java 8.

Metode Java Hashmap Iterator: Untuk: Setiap () Loop


for (Map.Entry<String, String> iterate : example.entrySet()) {
  System.out.println("Key: " + iterate.getKey() + ", Value: " + iterate.getValue());
}
Ini menggunakan sintaks For:Each untuk memanggil metode entrySet() untuk mengembalikan set yang memiliki kunci dan nilai sebagai elemennya. Selain itu, saat menggunakan metode .Entry() , objek hanya benar saat iterasi ini terjadi.

Metode Java Hashmap Iterator: Map.Entry<k, v>


Iterator<Map.Entry<String, String>> iterator = example.entrySet().iterator();

while(iterator.hasNext()){
  Map.Entry<String, String> element = iterator.next();
  System.out.println("Key: " + element.getKey() + ", Value: " + element.getValue());
)
Metode ini sekali lagi mengonversi Peta menjadi satu set untuk menggunakan Koleksi Iterator dan metode. Untuk ketiga metode iterator ini, pengembaliannya terlihat seperti ini:

Key: alpha, Value: one
Key: beta, Value: two
Key: gamma, Value: three
Java Hashmap Iterator Method: keySet() and values()
for (String key : example.keySet()) {
  System.out.println("Key: " + key);
}
for (String value : example.values()) {
  System.out.println("Value: " + value);
}
Yang ini mengembalikan elemen dengan cara yang berbeda. Ini pertama-tama akan mengembalikan semua Kunci secara berurutan dan kemudian semua Nilai:

Key: alpha
Key: beta
Key: gamma
Value: one
Value: two
Value: three