"Amigo, saya harap sekarang Anda sudah menyadari betapa bermanfaatnya array dalam pemrograman?"

"Pastinya, Rishi! Aku sudah menyelesaikan lebih dari satu tugas."

"Apakah tugas Anda memiliki tindakan berulang? Jenis yang telah Anda lakukan berulang kali."

"Jika saya memahami Anda dengan benar, maksud Anda tindakan serupa dalam tugas yang berbeda? Misalnya, di mana saja menggunakan loop untuk menampilkan konten array — saya sangat lelah melakukan itu!"

"Ya, itulah yang saya maksud. Pencipta Java memperhatikan bahwa pemrogram Java sering menulis kode yang sama saat bekerja dengan array. Misalnya, kode untuk menyalin bagian dari array ke array lain, atau kode untuk mengisi setiap sel array dengan yang sama nilai Atau contoh Anda: kode untuk menampilkan konten array dalam bentuk yang dapat dibaca di layar.

"Dan pemrogram sejati memiliki satu aturan yang sangat penting: jangan mengulanginya sendiri. Anda akan setuju bahwa melakukan pekerjaan yang berlebihan itu salah — Anda tidak akan dibayar untuk itu. Pekerjaan yang efektif dibayar dengan baik, percayalah. Kebetulan, seorang pemula kode segera dikenali oleh sejumlah besar kode berulang.

"Pencipta Java merenungkan hal ini, dan membuat Arrayskelas khusus (nama lengkapnya adalah java.util.Arrays), memasukkan tindakan terkait larik yang paling populer ke dalamnya."

"Hmm... Sangat menarik. Jadi apa sebenarnya yang ada di 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.

Arrays.toString()

"Metode pertama yang akan kita lihat adalah 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 larik menggunakan pernyataan berikut:

String str = name.toString();

"Di mana namenama variabel array, dan strnama variabel yang akan menyimpan representasi string dari array. Amigo, sudahkah Anda mencoba mencetak array ke layar menggunakan metode ini?System.out.println(name)

Saya akui, itu memang terjadi. Saya melihat beberapa omong kosong. Saya memutuskan untuk menjauh dari bahaya dan terus menggunakan loop.

"Kemungkinan besar Anda melihat sesuatu seperti:

I@37afeb11

"Huruf pertama Iberarti bahwa itu adalah sebuah intarray, dan simbol setelahnya @adalah alamat dari satu objek dalam memori. Anda dapat menganggapnya sebagai alamat array dalam memori. Di satu sisi, ini justru informasi yang disimpan dalam variabel array, tetapi di sisi lain, Anda mengharapkan sesuatu yang berbeda, bukan?"

"Tepat sekali! Saya berencana untuk melihat nilai dalam array. Ini adalah hal terakhir yang saya harapkan."

"Dan itulah mengapa mereka menemukan Arrays.toString()metode — untuk menampilkan nilai dari sebuah 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?]"

Arrays.deepToString()

"Namun, toString()metode ini tidak memadai untuk array dua dimensi. Dengan kata lain, jika Anda mencoba memanggil 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.

"Lalu apa yang harus dilakukan? Bagaimana kita menampilkan array dua dimensi dengan benar?"

"Pencipta Java juga mengantisipasi hal ini. Untuk tujuan ini, Arrayskelas tersebut 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.

Contoh:

int[] 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]], [[]]]"

Arrays.equals()

"Kami menemukan cara menampilkan array di layar. Bagaimana dengan membandingkan array? Apakah Anda ingat metode apa yang dapat kami gunakan untuk membandingkan string?"

"Saya biasanya menggunakan equalsmetode ini!

"Ya, equals, dan juga equalsIgnoreCase(yang membandingkan string tanpa memperhatikan huruf besar dan kecil).

"Kabar baik: Anda juga dapat menggunakan equalsmetode untuk array. Berita buruk: metode ini tidak membandingkan konten array. Metode equalsarray melakukan hal yang sama seperti ==operator — membandingkan referensi.

Contoh:

int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
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)

"Jadi apa yang kita lakukan? Bagaimana kita membandingkan array berdasarkan isinya?"

"Lagi-lagi Arrayskelas datang untuk menyelamatkan kita. Lebih khusus lagi, metodenya Arrays.equals(). Beginilah kami menyebutnya:

Arrays.equals(name1, name2)

"Metode ini mengembalikan 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 arraysmembandingkan 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)

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.

"Dengan demikian, untuk membandingkan array multidimensi dengan benar ( n = 1, 2, 3,... ), mereka menemukan Arrays.deepEquals()metode tersebut. Memanggilnya terlihat seperti ini:

Arrays.deepEquals(name1, name2)

"Metode ini kembali truejika array memiliki panjang yang sama dan elemennya sama. Jika tidak, ia akan 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)

"Terima kasih, Rishi! Pelajaran ini adalah apa yang saya butuhkan untuk membuat hidup saya lebih mudah dan lebih bahagia di masa depan. Sekarang saya akan menggunakan metode kelas Array dan menulis program saya lebih cepat.

"Itulah yang aku andalkan, ha-ha. Tapi ini bukan semua metode yang menarik di kelas Array. Aku akan memberitahumu tentang yang lain lain kali."