Cara Mengulangi Daftar di Java

1. Pengenalan

Mengulangi elemen senarai adalah salah satu tugas yang paling biasa dalam program.

Dalam tutorial ini, kita akan mengkaji pelbagai cara untuk melakukan ini di Java. Kami akan memfokuskan pada pengulangan senarai mengikut urutan, walaupun sebaliknya juga mudah.

2. untuk Gelung

Pertama, mari kita mengkaji semula beberapa untuk pilihan gelung.

Mari kita mulakan dengan menentukan senarai negara untuk contoh kita:

List countries = Arrays.asList("Germany", "Panama", "Australia");

2.1. Asas untuk Gelung

Pernyataan kawalan aliran yang paling biasa untuk lelaran adalah asas untuk gelung.

Yang untuk gelung mentakrifkan tiga jenis penyata dipisahkan dengan koma bertitik. Pernyataan pertama adalah penyataan inisialisasi. Yang kedua menentukan keadaan penamatan. Pernyataan terakhir adalah klausa kemas kini.

Di sini, kita hanya menggunakan pemboleh ubah integer sebagai indeks:

for (int i = 0; i < countries.size(); i++) { System.out.println(countries.get(i)); }

Dalam permulaan, kita mesti menyatakan pemboleh ubah integer untuk menentukan titik permulaan. Pemboleh ubah ini biasanya berfungsi sebagai indeks senarai.

Keadaan penamatan adalah ungkapan bahawa setelah penilaian mengembalikan boolean, setelah ungkapan ini menilai untuk memalsukan loop selesai.

Klausa kemas kini digunakan untuk mengubah keadaan semasa dari pemboleh ubah indeks, meningkatkannya atau menurunkannya hingga titik penamatan.

2.2. Dipertingkatkan untuk Gelung

Dipertingkatkan bagi gelung adalah struktur yang mudah yang membolehkan kita untuk melawat setiap elemen senarai. Ia serupa dengan asas untuk gelung tetapi lebih mudah dibaca dan padat. Akibatnya, adalah salah satu bentuk yang paling biasa digunakan untuk melintasi senarai.

Notis bahawa dipertingkatkan bagi gelung adalah lebih mudah daripada asas untuk gelung:

for (String country : countries) { System.out.println(country); }

3. Pengulangan

An Pelelar adalah corak reka bentuk yang ditawarkan oleh kami antara muka yang standard untuk merentasi struktur data tanpa perlu bimbang tentang perwakilan dalaman.

Cara melintasi struktur data ini menawarkan banyak kelebihan, antaranya kita dapat menekankan bahawa kod kita tidak bergantung pada pelaksanaannya.

Oleh itu, strukturnya boleh menjadi pokok binari atau senarai dua kali ganda kerana Iterator menyingkirkan kita dari cara melakukan traversal. Dengan cara ini, kita dapat dengan mudah menggantikan struktur data dalam kod kita tanpa masalah yang tidak menyenangkan.

3.1. Pengulangan

Di Jawa, corak Iterator dicerminkan dalam kelas java.util.Iterator . Ia digunakan secara meluas dalam Koleksi Java . Terdapat dua kaedah utama dalam Iterator , kaedah hasNext () dan seterusnya () .

Di sini, kami menunjukkan penggunaan kedua-duanya:

Iterator countriesIterator = countries.iterator(); while(countriesIterator.hasNext()) { System.out.println(countriesIterator.next()); }

The hasNext () kaedah memeriksa jika terdapat sebarang unsur yang masih ada dalam senarai .

The () bersebelahan kaedah mengembalikan elemen seterusnya dalam lelaran .

3.2. Penyenaraikan Senarai

A ListIterator membolehkan kita untuk merentasi senarai unsur-unsur untuk sama ada ke hadapan atau ke belakang.

Menatal senarai dengan ListIterator ke hadapan mengikuti mekanisme yang serupa dengan yang digunakan oleh Iterator . Dengan cara ini, kita dapat memindahkan iterator ke depan dengan kaedah seterusnya () , dan kita dapat mencari akhir senarai menggunakan kaedah hasNext () .

Seperti yang kita lihat, ListIterator kelihatan sangat mirip dengan Iterator yang kita gunakan sebelumnya:

ListIterator listIterator = countries.listIterator(); while(listIterator.hasNext()) { System.out.println(listIterator.next()); }

4. untuk Setiap ()

4.1. Iterable.forEach ()

Sejak Java 8, kita dapat menggunakan kaedah forEach () untuk melakukan iterasi pada elemen-elemen senarai . Kaedah ini ditentukan dalam antara muka Iterable dan dapat menerima ungkapan Lambda sebagai parameter.

Sintaksnya cukup mudah:

countries.forEach(System.out::println);

Sebelum fungsi forEach , semua iterator di Java aktif, yaitu, mereka melibatkan loop selama atau sebentar yang melintasi pengumpulan data sehingga syarat tertentu dipenuhi.

Dengan pengenalan forEach sebagai fungsi di antara muka Iterable , semua kelas yang menerapkan Iterable akan menambahkan fungsi forEach .

4.2. Stream.forEach ()

Kami juga dapat menukar kumpulan nilai menjadi Aliran dan kami dapat mengakses operasi seperti forEach () , map (), atau filter ().

Di sini, kami menunjukkan penggunaan biasa untuk aliran:

countries.stream().forEach((c) -> System.out.println(c));

5. Kesimpulan

Dalam artikel ini, kami menunjukkan cara yang berbeda untuk melakukan iterasi pada elemen daftar menggunakan Java API. Di antaranya, kami menyebut kaedah untuk loop, yang disempurnakan untuk loop, Iterator , ListIterator dan kaedah forEach () (termasuk dalam Java 8).

Di samping itu, kami juga menunjukkan cara menggunakan kaedah forEach () dengan Stream .

Akhirnya, semua kod yang digunakan dalam artikel ini terdapat di repo Github kami.