Pemrosesan Array dengan Apache Commons Lang 3

1. Ikhtisar

Pustaka Apache Commons Lang 3 menyediakan dukungan untuk manipulasi kelas inti API Java. Dukungan ini mencakup metode untuk menangani string, angka, tanggal, konkurensi, refleksi objek, dan lainnya.

Dalam tutorial singkat ini, kita akan fokus pada pemrosesan array dengan kelas utilitas ArrayUtils yang sangat berguna .

2. Ketergantungan Maven

Untuk menggunakan pustaka Commons Lang 3, cukup tarik dari repositori Maven pusat menggunakan dependensi berikut:

 org.apache.commons commons-lang3 3.5 

Anda dapat menemukan versi terbaru pustaka ini di sini.

3. ArrayUtils

Kelas ArrayUtils menyediakan metode utilitas untuk bekerja dengan array. Metode ini mencoba menangani masukan dengan baik dengan mencegah pengecualian agar tidak dilemparkan saat nilai null diteruskan.

Bagian ini menggambarkan beberapa metode yang ditentukan di kelas ArrayUtils . Perhatikan bahwa semua metode ini dapat bekerja dengan semua jenis elemen.

Untuk kenyamanan, ragamnya yang kelebihan beban juga ditentukan untuk menangani larik yang berisi tipe primitif.

4. tambah dan addAll

The add Metode salinan array yang diberikan dan menyisipkan elemen diberikan pada posisi tertentu di array baru. Jika posisinya tidak ditentukan, elemen baru ditambahkan di akhir larik.

Fragmen kode berikut menyisipkan angka nol di posisi pertama larik oldArray dan memverifikasi hasilnya:

int[] oldArray = { 2, 3, 4, 5 }; int[] newArray = ArrayUtils.add(oldArray, 0, 1); int[] expectedArray = { 1, 2, 3, 4, 5 }; assertArrayEquals(expectedArray, newArray);

Jika posisinya tidak ditentukan, elemen tambahan ditambahkan di akhir oldArray :

int[] oldArray = { 2, 3, 4, 5 }; int[] newArray = ArrayUtils.add(oldArray, 1); int[] expectedArray = { 2, 3, 4, 5, 1 }; assertArrayEquals(expectedArray, newArray);

The addAll Metode menambahkan semua elemen pada akhir array yang diberikan. Fragmen berikut mengilustrasikan metode ini dan mengonfirmasi hasilnya:

int[] oldArray = { 0, 1, 2 }; int[] newArray = ArrayUtils.addAll(oldArray, 3, 4, 5); int[] expectedArray = { 0, 1, 2, 3, 4, 5 }; assertArrayEquals(expectedArray, newArray);

5. hapus dan hapus Semua

The menghapus metode menghilangkan elemen pada posisi tertentu dari array yang diberikan. Semua elemen selanjutnya digeser ke kiri. Perhatikan bahwa ini benar untuk semua operasi penghapusan.

Metode ini mengembalikan array baru alih-alih membuat perubahan ke yang asli:

int[] oldArray = { 1, 2, 3, 4, 5 }; int[] newArray = ArrayUtils.remove(oldArray, 1); int[] expectedArray = { 1, 3, 4, 5 }; assertArrayEquals(expectedArray, newArray);

The removeAll metode menghapus semua elemen di posisi tertentu dari array yang diberikan:

int[] oldArray = { 1, 2, 3, 4, 5 }; int[] newArray = ArrayUtils.removeAll(oldArray, 1, 3); int[] expectedArray = { 1, 3, 5 }; assertArrayEquals(expectedArray, newArray);

6. removeElement dan removeElements

The removeElement metode menghilangkan kejadian pertama dari elemen tertentu dari array yang diberikan.

Alih-alih memberikan pengecualian, operasi penghapusan diabaikan jika elemen seperti itu tidak ada dalam larik yang diberikan:

int[] oldArray = { 1, 2, 3, 3, 4 }; int[] newArray = ArrayUtils.removeElement(oldArray, 3); int[] expectedArray = { 1, 2, 3, 4 }; assertArrayEquals(expectedArray, newArray);

The removeElements metode menghilangkan kejadian pertama elemen tertentu dari array yang diberikan.

Alih-alih mengeluarkan pengecualian, operasi penghapusan diabaikan jika elemen yang ditentukan tidak ada dalam larik yang diberikan:

int[] oldArray = { 1, 2, 3, 3, 4 }; int[] newArray = ArrayUtils.removeElements(oldArray, 2, 3, 5); int[] expectedArray = { 1, 3, 4 }; assertArrayEquals(expectedArray, newArray);

7. API removeAllOccurences

The removeAllOccurences metode menghapus semua kejadian dari elemen tertentu dari array yang diberikan.

Alih-alih memberikan pengecualian, operasi penghapusan diabaikan jika elemen seperti itu tidak ada dalam larik yang diberikan:

int[] oldArray = { 1, 2, 2, 2, 3 }; int[] newArray = ArrayUtils.removeAllOccurences(oldArray, 2); int[] expectedArray = { 1, 3 }; assertArrayEquals(expectedArray, newArray);

8. Berisi API

The berisi metode memeriksa apakah nilai ada di array yang diberikan. Berikut adalah contoh kode, termasuk verifikasi hasilnya:

int[] array = { 1, 3, 5, 7, 9 }; boolean evenContained = ArrayUtils.contains(array, 2); boolean oddContained = ArrayUtils.contains(array, 7); assertEquals(false, evenContained); assertEquals(true, oddContained);

9. API terbalik

The sebaliknya metode membalikkan urutan elemen dalam kisaran tertentu dari array yang diberikan. Metode ini membuat perubahan pada larik yang diteruskan alih-alih mengembalikan larik baru.

Mari kita lihat sekilas:

int[] originalArray = { 1, 2, 3, 4, 5 }; ArrayUtils.reverse(originalArray, 1, 4); int[] expectedArray = { 1, 4, 3, 2, 5 }; assertArrayEquals(expectedArray, originalArray);

Jika rentang tidak ditentukan, urutan semua elemen dibalik:

int[] originalArray = { 1, 2, 3, 4, 5 }; ArrayUtils.reverse(originalArray); int[] expectedArray = { 5, 4, 3, 2, 1 }; assertArrayEquals(expectedArray, originalArray);

10. The shift API

The shift method shifts a series of elements in a given array a number of positions. This method makes changes to the passed-in array instead of returning a new one.

The following code fragment shifts all elements between the elements at index 1 (inclusive) and index 4 (exclusive) one position to the right and confirms the result:

int[] originalArray = { 1, 2, 3, 4, 5 }; ArrayUtils.shift(originalArray, 1, 4, 1); int[] expectedArray = { 1, 4, 2, 3, 5 }; assertArrayEquals(expectedArray, originalArray);

If the range boundaries are not specified, all elements of the array are shifted:

int[] originalArray = { 1, 2, 3, 4, 5 }; ArrayUtils.shift(originalArray, 1); int[] expectedArray = { 5, 1, 2, 3, 4 }; assertArrayEquals(expectedArray, originalArray);

11. The subarray API

The subarray method creates a new array containing elements within a specified range of the given array. The following is an example of an assertion of the result:

int[] oldArray = { 1, 2, 3, 4, 5 }; int[] newArray = ArrayUtils.subarray(oldArray, 2, 7); int[] expectedArray = { 3, 4, 5 }; assertArrayEquals(expectedArray, newArray);

Notice that when the passed-in index is greater than the length of the array, it is demoted to the array length rather than having the method throw an exception. Similarly, if a negative index is passed in, it is promoted to zero.

12. The swap API

The swap method swaps a series of elements at specified positions in the given array.

The following code fragment swaps two groups of elements starting at the indexes 0 and 3, with each group containing two elements:

int[] originalArray = { 1, 2, 3, 4, 5 }; ArrayUtils.swap(originalArray, 0, 3, 2); int[] expectedArray = { 4, 5, 3, 1, 2 }; assertArrayEquals(expectedArray, originalArray);

If no length argument is passed in, only one element at each position is swapped:

int[] originalArray = { 1, 2, 3, 4, 5 }; ArrayUtils.swap(originalArray, 0, 3); int[] expectedArray = { 4, 2, 3, 1, 5 }; assertArrayEquals(expectedArray, originalArray);

13. Conclusion

This tutorial introduces the core array processing utility in Apache Commons Lang 3 – ArrayUtils.

Seperti biasa, penerapan semua contoh dan cuplikan kode yang diberikan di atas dapat ditemukan di proyek GitHub.