CodeGym /Blog Java /rawak /Java Iterator
John Squirrels
Tahap
San Francisco

Java Iterator

Diterbitkan dalam kumpulan
Hai! Dalam pelajaran hari ini, kita akan bercakap tentang Java Iterator. Bayangkan anda pergi ke perpustakaan, dan anda ingin mencari buku tertentu. Bagaimana anda melakukannya? Jika ia bukan fiksyen, terdapat Sistem Perpuluhan Dewey. Jika ia fiksyen, ia disusun mengikut susunan abjad mengikut nama keluarga mereka. Apa sahaja yang anda cari, pada satu ketika, anda perlu membaca buku satu demi satu sehingga anda menemui apa yang anda cari. Setiap kali anda mempunyai koleksi perkara dalam Java, sama ada ia disimpan dalam Array , ArrayList , Queue , atau List , bagaimana anda mencari nilai tertentu? Pada satu ketika, anda perlu melalui setiap elemen satu demi satu. Inilah kegunaan Java iterator.Cara Menggunakan Java Iterator: Tutorial Ringkas - 1

Apakah itu Iterator dalam Java

Apakah iterator dalam Java? Ia adalah cara melihat setiap elemen dalam koleksi. Dan dengan koleksi, kami maksudkan apa sahaja dalam kelas Koleksi . Ini termasuk:
  • ArrayList
  • HashSet
  • LinkedHashSet
  • LinkedList
  • PriorityQueue
  • vektor
  • dan ramai lagi…
Ia juga termasuk pelbagai antara muka untuk kelas tersebut, seperti Set , List , Queue , Dequeue , dan Sorted Set , untuk menamakan beberapa. Iterator<E> ialah kaedah antara muka awam bagi kelas Interface Iterator<E> . Ia telah dibawa dalam Java 1.2 dan menggantikan Penghitungan sebagai cara untuk memeriksa elemen berurutan dalam koleksi.

Mengapa Anda Tidak Harus Gunakan Untuk Gelung sebagai Iterator dalam Java

Salah satu cara pertama semua orang diajar untuk mengulang melalui koleksi di Jawa adalah untuk gelung. Ia kelihatan 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 ialah senarai yang berbunyi:

Content of element 0 is: 0
Content of element 1 is: 1
Content of element 2 is: 2
etc.…
Ini memang mempunyai kegunaannya, tetapi apa yang berlaku jika koleksi tidak menyimpan elemen dalam sistem berasaskan indeks? Sebagai contoh, Set s tidak mempunyai susunan seperti biasa. Oleh itu, adalah dinasihatkan untuk keluar daripada amalan menggunakan gelung for sebagai iterator dalam Java dan sebaliknya berlatih menggunakan kelas Iterator<E> . Berikut adalah beberapa contoh iterator java.

Bagaimana untuk menggunakan Iterator dalam Java

Berikut ialah beberapa contoh cara menggunakan iterator dalam Java. Apabila menggunakan kelas iterator, terdapat tiga cara untuk melintasi koleksi. Anda boleh menggunakan gelung while() , gelung for() dan gelung forEach() . Ambil perhatian bahawa gelung untuk ini berbeza daripada yang kita bincangkan sebelum ini. Berikut ialah tiga contoh lelaran java yang berbeza. Mula-mula, mari kita sediakan Koleksi untuk diulang.

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 ialah Koleksi ringkas yang terdiri daripada ArrayList yang kami memuatkan empat item. Sekarang mari kita lihat tiga kaedah menggunakan kelas Iterator untuk melintasi ArrayList .

gelung while().


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

while (iterator.hasNext()) {
   System.out.println("Element Value= " + iterator.next());
}
Gelung while() ini menggunakan kaedah Boolean .hasNext() kelas Iterator untuk menyemak sama ada terdapat elemen masa hadapan. Jika prasyarat itu benar, maka ia diteruskan. Jika ia kembali sebagai palsu, maka gelung berakhir. Bahagian utama di sini ialah kaedah .hasNext() dan .next() kedua-duanya melakukan semakan awal bagi elemen pertama. Jika Koleksi kosong dan tiada elemen pertama, maka kaedah mengembalikan palsu untuk .hasNext() dan akan membuang NoSuchElementException untuk kaedah .next() .

Untuk gelung


for (Iterator<String> iterator = example.iterator(); iterator.hasNext();) {
  System.out.println("Element Value= " + iterator.next());
}
Ini kelihatan seperti gelung yang lebih tradisional. Ia menggunakan kaedah .hasNext() sebagai bahagian semakan dan tukar syarat. Inisialisasi ialah panggilan kepada Iterator.

Untuk:Setiap gelung


for (String s : example) {
  System.out.println("Element Value= " + s);
}
Untuk :Setiap gelung ialah gelung for, tetapi jika anda tidak tahu cara membacanya, ia mungkin sedikit mengelirukan. Sintaks For:Each loop adalah untuk (data_type variableName : collectionName){ body} . Ini untuk: setiap gelung mempunyai beberapa kelemahan. Pertama, ia hanya boleh merentasi koleksi dalam satu arah. Kedua, anda perlu mengulangi setiap elemen. Anda tidak boleh melangkau mana-mana daripadanya. Tetapi sebagai pengulang senarai yang mudah di Jawa, ia adalah pilihan terbaik. Di sisi positifnya, untuk: setiap gelung sangat mudah dibaca dan apabila anda mengetahuinya, sukar untuk tersilap. Jika anda tertanya-tanya apakah output bagi tiga gelung iterator, semuanya adalah sama:

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

Cara menggunakan Iterator dalam Java Untuk Peta

Peta ialah cara yang popular untuk menyimpan data, tetapi kerana ia tidak memanjangkan Collection , anda tidak boleh menggunakan iterator sebelumnya untuk melintasi peta secara terus. Jadi bagaimana anda menggunakan iterator dalam Java untuk melalui Map s dan HashMap s? Terdapat empat kaedah lelaran peta Java yang baik. Kami akan melindungi mereka secara individu. Mula-mula, mari kita memuatkan peta dengan satu siri 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");

  }
}

Kaedah Iterator Java Hashmap: forEach(action)


example.forEach((k,v) -> System.out.println("Key: "+ k + ", Value: " + v));
Kaedah ini menggunakan ungkapan lambda untuk diulang. Pengendali lambda ialah kaedah forEach() dan badan mencetak nilai. Ini menggunakan operator berbilang parameter. Ini adalah kaedah terpantas dan paling bersih untuk lelaran peta di Java 8.

Java Hashmap Iterator Kaedah: Untuk:Setiap() Gelung


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

Kaedah Iterator Java Hashmap: 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());
)
Kaedah ini sekali lagi menukarkan Peta kepada set untuk menggunakan Petua Koleksi dan kaedah. Untuk tiga kaedah iterator ini, pulangan kelihatan 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 berbeza. Ia mula-mula akan mengembalikan semua Kekunci mengikut tertib dan kemudian semua Nilai:

Key: alpha
Key: beta
Key: gamma
Value: one
Value: two
Value: three
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION