Mencetak array dengan System.out.println(array) tidak menampilkan isinya — yang tercetak adalah penanda internal seperti [I@1b6d3586, bukan angka-angkanya. Hal serupa terjadi ketika kita perlu mengurutkan, mengisi seragam, atau mencari nilai: semuanya adalah kebutuhan berulang yang sudah diselesaikan class java.util.Arrays. Chapter ini memperkenalkan utilitas paling sering dipakai dari class tersebut — toString, sort, binarySearch, fill, deepToString, dan asList — sehingga kita berhenti menulis perulangan buatan sendiri untuk pekerjaan yang sudah tersedia.
Mencetak, Mengurutkan, dan Mencari #
Method Arrays.toString mengubah array menjadi teks berformat [a, b, c] — inilah cara paling cepat memeriksa isi array saat belajar atau men-debug. Method Arrays.sort mengurutkan elemen naik (ascending) langsung pada objek array yang sama, dan Arrays.fill mengisi seluruh slot dengan satu nilai. Untuk pencarian, Arrays.binarySearch menerapkan pencarian biner yang jauh lebih cepat daripada memeriksa elemen satu per satu — dengan syarat wajib: array harus sudah terurut.
Satu kebutuhan lagi yang sering diabaikan: membandingkan isi dua array. Operator == pada array membandingkan referensi (alamat), bukan isi, sehingga dua array berisi angka sama persis tetap dianggap berbeda. Method Arrays.equals(a, b) membandingkan elemen demi elemen dan mengembalikan true hanya bila panjang serta urutan isinya identik — padanan equals pada String, kini untuk array.
import java.util.Arrays;
public class AlatArray {
public static void main(String[] args) {
int[] data = {5, 2, 9, 1, 7};
System.out.println("Sebelum sort : " + Arrays.toString(data));
Arrays.sort(data);
System.out.println("Setelah sort : " + Arrays.toString(data));
int posisi7 = Arrays.binarySearch(data, 7);
int posisi4 = Arrays.binarySearch(data, 4);
System.out.println("binarySearch(7): " + posisi7);
System.out.println("binarySearch(4): " + posisi4);
int[] pola = new int[4];
Arrays.fill(pola, 8);
System.out.println("fill(8) : " + Arrays.toString(pola));
}
}Output yang Dihasilkan:
Sebelum sort : [5, 2, 9, 1, 7]
Setelah sort : [1, 2, 5, 7, 9]
binarySearch(7): 3
binarySearch(4): -3
fill(8) : [8, 8, 8, 8]Mari kita telaah baris-baris kode di atas:
- Baris 8 (
Arrays.toString(data)): memformat isi array menjadi[5, 2, 9, 1, 7]. Method ini tidak mengubah array; method ini hanya menyusun teks untuk dicetak. - Baris 10 (
Arrays.sort(data)): mengurutkan array in-place — objek array yang sama kini berisi[1, 2, 5, 7, 9], tidak ada array baru yang dibuat. - Baris 13 (
binarySearch(data, 7)): mencari angka7pada array terurut dan mengembalikan indeks3. Pencarian biner membuang setengah kandidat pada tiap langkah, sehingga pada array sejuta elemen hanya butuh sekitar 20 langkah. - Baris 14 (
binarySearch(data, 4)): angka4tidak ditemukan, dan hasilnya-3. Konvensinya: nilai kembalian negatif berarti “tidak ada”, dengan rumus-(titikSisip) - 1. Angka4akan ditempatkan di indeks2bila disisipkan agar tetap terurut, sehingga hasilnya-(2) - 1 = -3. - Baris 17-18 (
Arrays.fill(pola, 8)): mengisi seluruh slot arraypoladengan8, menghasilkan[8, 8, 8, 8].
deepToString dan asList #
Dua method lanjutan menutup kebutuhan sehari-hari. Arrays.deepToString menangani array bersarang: untuk int[][], method ini menelusuri tiap baris dan mencetak isinya, bukan penanda internalnya. Arrays.asList mengubah array menjadi List berukuran tetap — jembatan praktis menuju dunia Collections, meski dengan satu batasan penting yang kita lihat pada contoh.
import java.util.Arrays;
import java.util.List;
public class AlatArrayLanjutan {
public static void main(String[] args) {
int[][] papan = {{1, 2}, {3, 4, 5}};
System.out.println("deepToString: " + Arrays.deepToString(papan));
String[] bahasa = {"Java", "Python", "Go"};
List<String> daftar = Arrays.asList(bahasa);
System.out.println("asList : " + daftar);
System.out.println("ukuran : " + daftar.size());
daftar.set(0, "Kotlin");
System.out.println("setelah set : " + daftar);
System.out.println("array asli : " + Arrays.toString(bahasa));
}
}Output yang Dihasilkan:
deepToString: [[1, 2], [3, 4, 5]]
asList : [Java, Python, Go]
ukuran : 3
setelah set : [Kotlin, Python, Go]
array asli : [Kotlin, Python, Go]Bedah singkatnya: baris 7 memakai deepToString untuk mencetak [[1, 2], [3, 4, 5]] — Arrays.toString biasa pada array dua dimensi hanya mencetak penanda internal tiap barisnya. Baris 9-10 membungkus array bahasa menjadi List dengan asList. Baris 14 lalu mengganti elemen ke-0 menjadi "Kotlin" — dan baris 15 membuktikan array aslinya ikut berubah, karena asList tidak menyalin data melainkan membuat view yang menulis langsung ke array di belakangnya.
Class Arrays adalah contoh bagaimana pustaka standar menyerahkan pekerjaan rutin. Berikutnya kita naikkan levelnya: array yang elemennya bukan angka melainkan objek dengan datanya masing-masing — lengkap dengan jebakan null yang menyertainya.
Referensi #
Berkas Sumber
Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.
AlatArray.java
Unduh berkasimport java.util.Arrays;
public class AlatArray {
public static void main(String[] args) {
int[] data = {5, 2, 9, 1, 7};
System.out.println("Sebelum sort : " + Arrays.toString(data));
Arrays.sort(data);
System.out.println("Setelah sort : " + Arrays.toString(data));
int posisi7 = Arrays.binarySearch(data, 7);
int posisi4 = Arrays.binarySearch(data, 4);
System.out.println("binarySearch(7): " + posisi7);
System.out.println("binarySearch(4): " + posisi4);
int[] pola = new int[4];
Arrays.fill(pola, 8);
System.out.println("fill(8) : " + Arrays.toString(pola));
}
}
AlatArrayLanjutan.java
Unduh berkasimport java.util.Arrays;
import java.util.List;
public class AlatArrayLanjutan {
public static void main(String[] args) {
int[][] papan = {{1, 2}, {3, 4, 5}};
System.out.println("deepToString: " + Arrays.deepToString(papan));
String[] bahasa = {"Java", "Python", "Go"};
List<String> daftar = Arrays.asList(bahasa);
System.out.println("asList : " + daftar);
System.out.println("ukuran : " + daftar.size());
daftar.set(0, "Kotlin");
System.out.println("setelah set : " + daftar);
System.out.println("array asli : " + Arrays.toString(bahasa));
}
}