Cara Membalikkan Array di Jawa

1. Gambaran keseluruhan

Dalam artikel ringkas ini, kami akan menunjukkan bagaimana kami dapat membalikkan array di Java.

Kami akan melihat beberapa cara yang berbeza untuk melakukannya dengan menggunakan penyelesaian berasaskan Java 8 murni - beberapa di antaranya mengubah susunan yang ada dan ada yang membuat yang baru.

Seterusnya, kita akan melihat dua penyelesaian menggunakan perpustakaan luaran - satu menggunakan Apache Commons Lang dan satu menggunakan Google Guava .

2. Mendefinisikan Masalah

Idea asasnya adalah untuk membalikkan susunan elemen dalam larik. Jadi, jika diberi susunan:

fruits = {"apples", "tomatoes", "bananas", "guavas", "pineapples"}

Kami ingin mendapatkan:

invertedFruits = {"pineapples", "guavas", "bananas", "tomatoes", "apples"}

Mari lihat beberapa cara yang boleh kita lakukan.

3. Menggunakan Tradisional untuk Gelung

Cara pertama yang mungkin kita fikirkan untuk membalikkan array adalah dengan menggunakan loop untuk :

void invertUsingFor(Object[] array) { for (int i = 0; i < array.length / 2; i++) { Object temp = array[i]; array[i] = array[array.length - 1 - i]; array[array.length - 1 - i] = temp; } }

Seperti yang kita lihat, kod itu berulang melalui separuh daripada susunan, mengubah elemen dalam kedudukan simetri.

Kami menggunakan pemboleh ubah sementara sehingga kami tidak kehilangan nilai kedudukan array semasa semasa lelaran.

4. Menggunakan Java 8 Stream API

Kami juga dapat membalikkan array dengan menggunakan Stream API:

Object[] invertUsingStreams(Object[] array) { return IntStream.rangeClosed(1, array.length) .mapToObj(i -> array[array.length - i]) .toArray(); }

Di sini kita menggunakan kaedah IntStream.range untuk menghasilkan aliran nombor yang berurutan. Kemudian kami memetakan urutan ini menjadi indeks array dalam urutan menurun.

5. Menggunakan Koleksi.balik ()

Mari lihat cara membalikkan array menggunakan kaedah Collections.reverse () :

public void invertUsingCollectionsReverse(Object[] array) { List list = Arrays.asList(array); Collections.reverse(list); }

Berbanding dengan contoh sebelumnya, ini adalah kaedah yang lebih mudah dibaca untuk melakukan tugas.

6. Menggunakan Apache Commons Lang

Pilihan lain untuk membalikkan array adalah dengan menggunakan perpustakaan Apache Commons Lang . Untuk menggunakannya, pertama-tama kita mesti memasukkan perpustakaan sebagai pergantungan:

 org.apache.commons commons-lang3 3.5 

Versi terbaru Commons Lang boleh didapati di Maven Central.

Mari gunakan kelas ArrayUtils untuk membalikkan array:

public void invertUsingCommonsLang(Object[] array) { ArrayUtils.reverse(array); }

Seperti yang kita lihat, penyelesaian ini agak mudah.

7. Menggunakan Jambu Batu Google

Satu lagi pilihan adalah menggunakan pustaka Jambu Batu Google . Sama seperti yang kami lakukan dengan Commons Lang , kami akan memasukkan perpustakaan sebagai pergantungan:

 com.google.guava guava 22.0 

Versi terbaru boleh didapati di Maven Central.

Kemudian, kita boleh menggunakan reverse kaedah dalam Guava ini Senarai kelas untuk boot array:

public Object[] invertUsingGuava(Object[] array) { List list = Arrays.asList(array); List reversed = Lists.reverse(list); return reversed.toArray(); }

8. Kesimpulannya

Dalam artikel ini, kami melihat beberapa cara untuk membalikkan array di Java. Kami menunjukkan beberapa penyelesaian yang hanya menggunakan Java inti dan dua penyelesaian lain yang menggunakan perpustakaan pihak ketiga - Commons Lang dan Guava .

Semua sampel kod yang ditunjukkan di sini boleh didapati di GitHub - ini adalah projek Maven, jadi mudah untuk diimport dan dijalankan sebagaimana adanya.