Cara Mengulangi Daftar di Java

1. Perkenalan

Mengulangi elemen daftar adalah salah satu tugas paling umum dalam sebuah program.

Dalam tutorial ini, kami akan meninjau berbagai cara untuk melakukan ini di Java. Kami akan berfokus pada pengulangan melalui daftar secara berurutan, meskipun sebaliknya juga sederhana.

2. untuk Loop

Pertama, mari kita tinjau beberapa opsi untuk loop.

Mari kita mulai dengan menentukan daftar negara untuk contoh kita:

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

2.1. Dasar untuk Loop

Pernyataan kontrol aliran yang paling umum untuk iterasi adalah dasar for loop.

The untuk lingkaran mendefinisikan tiga jenis laporan dipisahkan dengan titik koma. Pernyataan pertama adalah pernyataan inisialisasi. Yang kedua mendefinisikan kondisi terminasi. Pernyataan terakhir adalah klausul pembaruan.

Di sini, kami hanya menggunakan variabel integer sebagai indeks:

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

Dalam inisialisasi, kita harus mendeklarasikan variabel integer untuk menentukan titik awal. Variabel ini biasanya bertindak sebagai indeks daftar.

Kondisi terminasi adalah ekspresi yang setelah evaluasi mengembalikan boolean, setelah ekspresi ini bernilai false , pengulangan selesai.

Klausa pembaruan digunakan untuk mengubah status variabel indeks saat ini, menambah atau mengurangi sampai titik penghentian.

2.2. Ditingkatkan untuk Loop

Perulangan for yang disempurnakan adalah struktur sederhana yang memungkinkan kita mengunjungi setiap elemen daftar. Ini mirip dengan loop dasar tetapi lebih mudah dibaca dan kompak. Akibatnya, adalah salah satu bentuk yang paling umum digunakan untuk melintasi daftar.

Perhatikan bahwa loop for yang ditingkatkan lebih sederhana daripada loop for dasar :

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

3. Iterator

Sebuah Iterator adalah pola desain yang menawarkan kami antarmuka standar untuk melintasi struktur data tanpa harus khawatir tentang representasi internal.

Cara melintasi struktur data ini menawarkan banyak keuntungan, di antaranya kami dapat menekankan bahwa kode kami tidak bergantung pada implementasinya.

Oleh karena itu, struktur dapat berupa pohon biner atau daftar tertaut ganda karena Iterator memisahkan kita dari cara melakukan traversal. Dengan cara ini, kita dapat dengan mudah mengganti struktur data dalam kode kita tanpa masalah yang tidak menyenangkan.

3.1. Iterator

Di Java, pola Iterator tercermin di kelas java.util.Iterator . Ini banyak digunakan di Koleksi Java . Ada dua metode utama dalam Iterator , metode hasNext () dan next () .

Di sini, kami mendemonstrasikan penggunaan keduanya:

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

The hasNext () metode pemeriksaan apakah ada unsur-unsur yang tersisa dalam daftar .

The next () metode mengembalikan elemen berikutnya dalam iterasi .

3.2. ListIterator

Sebuah ListIterator memungkinkan kita untuk melintasi daftar elemen baik maju atau mundur order.

Menggulir daftar dengan maju ListIterator mengikuti mekanisme yang mirip dengan yang digunakan oleh Iterator . Dengan cara ini, kita bisa memajukan iterator dengan metode next () , dan kita bisa menemukan akhir daftar menggunakan metode hasNext () .

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

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

4. forEach ()

4.1. Iterable.forEach ()

Sejak Java 8, kita dapat menggunakan metode forEach () untuk melakukan iterasi terhadap elemen-elemen daftar . Metode ini didefinisikan di antarmuka Iterable dan dapat menerima ekspresi Lambda sebagai parameter.

Sintaksnya cukup sederhana:

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

Sebelum fungsi forEach , semua iterator di Java aktif, yaitu, melibatkan loop for atau a while yang melintasi pengumpulan data hingga kondisi tertentu terpenuhi.

Dengan pengenalan forEach sebagai fungsi di antarmuka Iterable , semua kelas yang mengimplementasikan Iterable memiliki fungsi forEach yang ditambahkan.

4.2. Stream.forEach ()

Kita juga bisa mengonversi kumpulan nilai menjadi Stream dan kita bisa memiliki akses ke operasi seperti forEach () , map (), atau filter ().

Di sini, kami mendemonstrasikan penggunaan tipikal untuk aliran:

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

5. Kesimpulan

Dalam artikel ini, kami menunjukkan berbagai cara untuk mengulangi elemen daftar menggunakan Java API. Di antaranya, kami menyebutkan untuk lingkaran, yang disempurnakan untuk lingkaran, yang Iterator , yang ListIterator dan forEach () metode (termasuk di Jawa 8).

Selain itu, kami juga menunjukkan cara menggunakan metode forEach () dengan Streams .

Akhirnya, semua kode yang digunakan dalam artikel ini tersedia di repo Github kami.