1. Arrayskelas

Seperti yang kami catat sebelumnya, array sangat berguna dan sering digunakan dalam pemrograman.

Pembuat Java dengan sangat cepat menyadari bahwa pemrogram Java sering menulis kode yang sama saat bekerja dengan array. Misalnya, menyalin bagian dari larik ke larik lain, kode untuk mengisi setiap sel larik dengan nilai yang sama, menampilkan konten larik dalam format yang nyaman, dll.

Itu sebabnya mereka membuat Arrayskelas khusus (nama lengkapnya adalah java.util.Arrays), memasukkan tindakan terkait array yang paling populer ke dalamnya.

Ini memiliki banyak metode untuk setiap kesempatan, tetapi pertama-tama kita akan mempertimbangkan hanya 10 di antaranya — yang paling sederhana dan paling sering digunakan.


2.Arrays.toString()

Metode pertama yang akan kita lihat disebut Arrays.toString(). Tapi pertama-tama, sedikit latar belakang.

Setiap larik di Java memiliki toString()metode, yang mengembalikan 'representasi tekstual dari larik'. Anda bisa mendapatkan representasi tekstual dari sebuah array menggunakan pernyataan berikut:

String str = name.toString();

Di mana namenama variabel array, dan strnama variabel yang akan menyimpan representasi string dari array.

Tetapi jika Anda mencoba mencetak larik ke layar menggunakan metode ini, kemungkinan besar Anda akan melihat sesuatu seperti ini:System.out.println(name)

I@37afeb11

Huruf pertama Iberarti array int, dan simbol setelahnya @adalah alamat array di memori. Di satu sisi, ini justru informasi yang disimpan dalam variabel array, tetapi di sisi lain, kami mengharapkan sesuatu yang berbeda, bukan?

Kami ingin melihat nilai dalam array! Dan itulah mengapa mereka menemukan metode Arrays.toString()— untuk menampilkan nilai array. Kami menyebutnya seperti ini:

String str = Arrays.toString(name);

Contoh:

int[] array = {1, 2, 3};
String str = Arrays.toString(array);
Variabel strakan berisi string:
"[1, 2, 3]"
int[] array = {};
String str = Arrays.toString(array);
Variabel strakan berisi string:
"[]"
String[] array = {"Hi", "How's", "life?"};
String str = Arrays.toString(array);
Variabel strakan berisi string:
"[Hi, How's, life?]"


3.Arrays.deepToString()

Tetapi jika Anda mencoba mengonversi array dua dimensi menjadi metode string (untuk menampilkannya) using the Arrays.toString(), Anda akan melihat sesuatu yang familier:

[I@37afeb11, I@37afeb21, I@37afeb31]

Ini semua karena sel-sel dari array dua dimensi menyimpan referensi ke array satu dimensi. Dan bagaimana array satu dimensi diubah menjadi string? Persis seperti yang Anda lihat di atas.

Apa yang bisa dilakukan? Bagaimana kita menampilkan array dua dimensi dengan benar?

Untuk tujuan ini, Arrayskelas memiliki metode khusus lainnya — deepToString(). Memanggilnya terlihat seperti ini:

String str = Arrays.deepToString(name);

Metode ini dapat melewatkan array dua dimensi, satu dimensi, tiga dimensi atau, secara umum, dimensi apa pun, dan itu akan selalu menampilkan elemen array.
Catatan: metode ini Arrays.deepToString()tidak bekerja dengan array primitif satu dimensi (misalnya, int[]).

Contoh:

Integer[] array = {1, 2, 3};
String str = Arrays.deepToString(array);
Variabel strakan berisi string:
"[1, 2, 3]"
int[][] array = { {1, 1}, {2, 2}, {3, 3} };
String str = Arrays.deepToString(array);
Variabel strakan berisi string:
"[[1, 1], [2, 2], [3, 3]]"
int[][][] array = { {{1, 2, 3}, {1}}, {{}} };
String str = Arrays.deepToString(array);
Variabel strakan berisi string:
"[[[1, 2, 3], [1]], [[]]]"


4.Arrays.equals()

Kami menemukan cara menampilkan array di layar, tetapi bagaimana dengan membandingkan array?

Untuk membandingkan string, kita memiliki equalsdan equalsIgnoreCasemetode, tetapi metode apa yang dimiliki array?

Kabar baiknya adalah array memiliki equalsmetode. Berita buruknya adalah tidak membandingkan isi dari array. Metode equalsarray melakukan hal yang sama seperti ==operator — membandingkan referensi. Contoh:

Contoh:

int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
boolean b = x1 == x2;


false(referensi tidak sama)
int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
x1.equals(x2);
Metode equalshanya arraysmembandingkan referensi dari dua array.

false(referensi tidak sama)

Apa yang bisa dilakukan? Bagaimana kita membandingkan array berdasarkan isinya?

Dan lagi Arraysdatang untuk menyelamatkan kita, atau lebih tepatnya, metodenya Arrays.equals(). Inilah cara kami menyebutnya:

Arrays.equals(name1, name2)

Metode kembali truejika array memiliki panjang yang sama dan elemennya sama. Jika tidak, ia mengembalikan false.

Contoh:

int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
x1.equals(x2);
Metode equalshanya arrays membandingkan referensi dari dua array.

false(referensi tidak sama)
int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
Arrays.equals(x1, x2);


true(isinya sama)
int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3, 4};
Arrays.equals(x1, x2);


false(isi array berbeda)

5.Arrays.deepEquals()

Dan, seperti yang mungkin sudah Anda duga, Arrays.equalsmetode ini tidak akan bekerja dengan benar untuk larik dua dimensi: ia memperlakukan larik dua dimensi seperti larik satu dimensi yang elemennya adalah alamat larik satu dimensi.

Jadi, untuk membandingkan array multidimensi ( n = 1, 2, 3,...) dengan benar, mereka menemukan metodenya Arrays.deepEquals(). Memanggilnya terlihat seperti ini:

Arrays.deepEquals(name1, name2)

Metode kembalitruejika array memiliki panjang yang sama dan elemennya sama. Jika tidak, itu kembalifalse. Jika elemen di dalam array juga merupakan array, maka Arrays.deepEquals()metode ini digunakan untuk membandingkannya, dan seterusnya.

Contoh:

int[][] x1 = {{1, 2, 3}, {4, 5, 6}};
int[][] x2 = {{1, 2, 3}, {4, 5, 6}};
x1.equals(x2);
Metode equalshanya arrays membandingkan referensi dari dua array.

false(referensi tidak sama)
int[][] x1 = {{1, 2, 3}, {4, 5, 6}};
int[][] x2 = {{1, 2, 3}, {4, 5, 6}};
Arrays.equals(x1, x2);
Metode ini Arrays.equalsakan membandingkan dan sebagai array satu dimensi yang menyimpan referensi. Mereka mengandung referensi yang berbeda. (isi array tidak sama) x1x2
false
int[][] x1 = {{1, 2, 3}, {4, 5, 6}};
int[][] x2 = {{1, 2, 3}, {4, 5, 6}};
Arrays.deepEquals(x1, x2);


true(isinya sama)