Saya perlu mendapatkan panjang array 2D untuk baris dan kolom. Saya telah berhasil melakukan ini, menggunakan kode berikut:
public class MyClass {
public static void main(String args[])
{
int[][] test;
test = new int[5][10];
int row = test.length;
int col = test[0].length;
System.out.println(row);
System.out.println(col);
}
}
Ini mencetak 5, 10 seperti yang diharapkan.
Sekarang lihat baris ini:
int col = test[0].length;
Perhatikan bahwa saya sebenarnya harus mereferensikan baris tertentu, untuk mendapatkan panjang kolom. Bagi saya, ini tampak sangat buruk. Selain itu, jika array didefinisikan sebagai:
test = new int[0][10];
Maka kode akan gagal ketika mencoba untuk mendapatkan panjangnya. Apakah ada cara berbeda (lebih cerdas) untuk melakukan ini?
java
arrays
multidimensional-array
pengguna432209
sumber
sumber
Jawaban:
Mempertimbangkan
Panjang kolom berbeda per baris. Jika Anda mencadangkan beberapa data dengan array 2D ukuran tetap, maka berikan getter ke nilai tetap di kelas wrapper.
sumber
Array 2D bukan kisi persegi panjang. Atau mungkin lebih baik, tidak ada yang namanya array 2D di Jawa.
Keluaran
Array
test
dantest2
(kurang lebih) sama.sumber
Sangat sulit untuk mengingatnya
Mari kita pahami mengapa hal ini terjadi dan bagaimana kita dapat mengetahui hal ini ketika kita diberi masalah array. Dari kode di bawah ini kita dapat melihat bahwa baris = 4 dan kolom = 3:
arr
memiliki banyak array di dalamnya, dan array ini dapat diatur secara vertikal untuk mendapatkan jumlah kolom. Untuk mendapatkan jumlah baris, kita perlu mengakses array pertama dan mempertimbangkan panjangnya. Dalam hal ini, kita mengakses [1, 1, 1, 1] dan dengan demikian, jumlah baris = 4. Ketika Anda diberi masalah di mana Anda tidak dapat melihat array, Anda dapat memvisualisasikan array sebagai persegi panjang dengan n Xm dimensi dan menyimpulkan bahwa kita bisa mendapatkan jumlah baris dengan mengakses array pertama lalu panjangnya. Yang lain (arr.length
) adalah untuk kolom.sumber
Java memungkinkan Anda membuat "array kasar" di mana setiap "baris" memiliki panjang yang berbeda. Jika Anda tahu Anda memiliki array persegi, Anda dapat menggunakan kode Anda yang dimodifikasi untuk melindungi terhadap array kosong seperti ini:
sumber
Jika Anda memiliki array ini:
Kamu bisa melakukan ini:
= 2
= 2
= 2
= 3
= 4
sumber
Tidak ada cara yang lebih bersih di tingkat bahasa karena tidak semua array multidimensi berbentuk persegi panjang. Kadang-kadang array bergerigi (panjang kolom berbeda) diperlukan.
Anda dapat dengan mudah membuat kelas sendiri untuk abstrak fungsi yang Anda butuhkan.
Jika Anda tidak terbatas pada array, maka mungkin beberapa dari berbagai kelas koleksi akan berfungsi juga, seperti Multimap .
sumber
.length = jumlah baris / panjang kolom
[0] .length = jumlah kolom / panjang baris
sumber
Coba program berikut ini untuk array 2d di java:
sumber
sumber
Dengan
Java 8
, memungkinkan Anda melakukan sesuatu yang lebih elegan seperti ini:sumber
sumber