1. Arrays
kelas
Seperti yang kita nyatakan sebelum ini, tatasusunan adalah sangat berguna dan kerap digunakan dalam pengaturcaraan.
Pencipta Java dengan cepat menyedari bahawa pengaturcara Java sering menulis kod yang sama apabila bekerja dengan tatasusunan. Contohnya, salin sebahagian tatasusunan ke tatasusunan lain, kod untuk mengisi setiap sel tatasusunan dengan nilai yang sama, paparkan kandungan tatasusunan dalam format yang mudah, dsb.
Itulah sebabnya mereka mencipta Arrays
kelas khas (nama penuhnya ialah java.util.Arrays
), meletakkan tindakan berkaitan tatasusunan yang paling popular ke dalamnya.
Ia mempunyai banyak kaedah untuk setiap kesempatan, tetapi mula-mula kita akan mempertimbangkan hanya 10 daripadanya — yang paling mudah dan paling kerap digunakan.
2.Arrays.toString()
Kaedah pertama yang akan kita lihat dipanggil Arrays.toString()
. Tetapi pertama, sedikit latar belakang.
Setiap tatasusunan dalam Java mempunyai toString()
kaedah, yang mengembalikan 'perwakilan teks tatasusunan'. Anda boleh mendapatkan perwakilan teks tatasusunan menggunakan pernyataan berikut:
String str = name.toString();
Di manakah name
nama pembolehubah tatasusunan, dan str
nama pembolehubah yang akan menyimpan perwakilan rentetan tatasusunan.
Tetapi jika anda cuba mencetak tatasusunan ke skrin menggunakan kaedah, kemungkinan besar anda akan melihat sesuatu seperti ini:System.out.println(name)
I@37afeb11
Huruf pertama I
bermaksud bahawa ia adalah int
tatasusunan, dan simbol selepasnya @
ialah alamat tatasusunan dalam ingatan. Di satu pihak, ini adalah maklumat yang disimpan dalam pembolehubah tatasusunan, tetapi di sisi lain, kami menjangkakan sesuatu yang berbeza, bukan?
Kami mahu melihat nilai dalam tatasusunan! Dan itulah sebabnya mereka menghasilkan Arrays.toString()
kaedah — untuk memaparkan nilai tatasusunan. Kami memanggilnya seperti ini:
String str = Arrays.toString(name);
Contoh:
|
Pembolehubah str akan mengandungi rentetan:
|
|
Pembolehubah str akan mengandungi rentetan:
|
|
Pembolehubah str akan mengandungi rentetan:
|
3.Arrays.deepToString()
Tetapi jika anda cuba menukar tatasusunan dua dimensi kepada kaedah rentetan (untuk memaparkannya) using the Arrays.toString()
, anda akan melihat sesuatu yang biasa:
[I@37afeb11, I@37afeb21, I@37afeb31]
Ini semua kerana sel tatasusunan dua dimensi menyimpan rujukan kepada tatasusunan satu dimensi. Dan bagaimanakah tatasusunan satu dimensi ditukar kepada rentetan? Tepat seperti yang anda lihat di atas.
Apa yang boleh dibuat? Bagaimanakah kita memaparkan tatasusunan dua dimensi dengan betul?
Untuk tujuan ini, Arrays
kelas mempunyai satu lagi kaedah khas — deepToString()
. Memanggilnya kelihatan seperti ini:
String str = Arrays.deepToString(name);
Kaedah ini boleh menghantar tatasusunan yang dua dimensi, satu dimensi, tiga dimensi atau, secara umum, sebarang dimensi, dan ia akan sentiasa memaparkan unsur tatasusunan.
Nota: kaedah Arrays.deepToString()
tidak berfungsi dengan tatasusunan satu dimensi primitif (contohnya, int[]
).
Contoh:
|
Pembolehubah str akan mengandungi rentetan:
|
|
Pembolehubah str akan mengandungi rentetan:
|
|
Pembolehubah str akan mengandungi rentetan:
|
4.Arrays.equals()
Kami mengetahui cara untuk memaparkan tatasusunan pada skrin, tetapi bagaimana pula dengan membandingkan tatasusunan?
Untuk membandingkan rentetan, kita ada equals
dan equalsIgnoreCase
kaedah, tetapi apakah kaedah yang ada pada tatasusunan?
Berita baiknya ialah tatasusunan mempunyai equals
kaedah. Berita buruknya ialah ia tidak membandingkan kandungan tatasusunan. Kaedah equals
tatasusunan melakukan perkara yang sama seperti ==
pengendali - ia membandingkan rujukan. Contoh:
Contoh:
|
false (rujukan tidak sama) |
|
Kaedah equals hanya arrays membandingkan rujukan dua tatasusunan. false (rujukan tidak sama) |
Apa yang boleh dibuat? Bagaimanakah kita membandingkan tatasusunan berdasarkan kandungannya?
Dan sekali lagi ia Arrays
datang untuk menyelamatkan kita, atau lebih khusus, kaedahnya Arrays.equals()
. Inilah cara kami memanggilnya:
Arrays.equals(name1, name2)
Kaedah kembali true
jika tatasusunan adalah sama panjang dan elemennya adalah sama. Jika tidak, ia kembali false
.
Contoh:
|
Kaedah equals hanya arrays membandingkan rujukan dua tatasusunan. false (rujukan tidak sama) |
|
true (isinya sama) |
|
false (kandungan tatasusunan adalah berbeza) |
5.Arrays.deepEquals()
Dan, seperti yang anda mungkin sudah meneka, Arrays.equals
kaedah ini tidak akan berfungsi dengan betul untuk tatasusunan dua dimensi: ia memperlakukan tatasusunan dua dimensi seperti tatasusunan satu dimensi yang elemennya adalah alamat tatasusunan satu dimensi.
Oleh itu, untuk membandingkan tatasusunan berbilang dimensi dengan betul ( n = 1, 2, 3,...
), mereka menghasilkan Arrays.deepEquals()
kaedah tersebut. Memanggilnya kelihatan seperti ini:
Arrays.deepEquals(name1, name2)
Kaedah kembalitrue
jika tatasusunan adalah sama panjang dan elemennya adalah sama. Jika tidak, ia kembalifalse
. Jika elemen di dalam tatasusunan juga tatasusunan, maka Arrays.deepEquals()
kaedah digunakan untuk membandingkannya, dan seterusnya.
Contoh:
|
Kaedah equals hanya arrays membandingkan rujukan dua tatasusunan. false (rujukan tidak sama) |
|
Kaedah ini Arrays.equals akan membandingkan dan sebagai tatasusunan satu dimensi yang menyimpan rujukan. Mereka mengandungi rujukan yang berbeza. (kandungan tatasusunan tidak sama) x1 x2 false |
|
true (isinya sama) |