Bagaimana saya bisa membuat dan mengambil array asosiatif di Jawa seperti saya bisa di PHP?
Sebagai contoh:
$arr[0]['name'] = 'demo';
$arr[0]['fname'] = 'fdemo';
$arr[1]['name'] = 'test';
$arr[1]['fname'] = 'fname';
Bagaimana saya bisa membuat dan mengambil array asosiatif di Jawa seperti saya bisa di PHP?
Sebagai contoh:
$arr[0]['name'] = 'demo';
$arr[0]['fname'] = 'fdemo';
$arr[1]['name'] = 'test';
$arr[1]['fname'] = 'fname';
Java tidak mendukung array asosiatif, namun ini dapat dengan mudah dicapai menggunakan a Map
. Misalnya,
Map<String, String> map = new HashMap<String, String>();
map.put("name", "demo");
map.put("fname", "fdemo");
// etc
map.get("name"); // returns "demo"
Bahkan lebih akurat untuk contoh Anda (karena Anda dapat mengganti String dengan objek apa pun yang memenuhi kebutuhan Anda) akan menyatakan:
List<Map<String, String>> data = new ArrayList<>();
data.add(0, map);
data.get(0).get("name");
NullPointerException
jika peta luar tidak berisi peta untuk masuk0
. Bukankah PHP lebih permisif dengan $ arr [0] ['name'] (Saya tidak tahu bahasa ini sama sekali)?ArrayList
dalam hampir semua kasus karena perbedaan kinerja (tak terduga?). Tapi itu diskusi lain.HashMap
, dan tentu saja tidak tanpa sengaja membandingkan perilaku dan menemukan faktor beban yang lebih baik untuk kasus penggunaan Anda. Satu-satunya alasan untuk menentukan ukuran awal adalah jika Anda tahu sebelumnya bahwa peta akan sangat besar.HashMap
tidak menyia-nyiakan (banyak) memori jika kosong, tetapi jika Anda berniat untuk membuat peta besar, Anda dapat menyimpan beberapa ukuran array dengan menentukan ukurannya di depan.Java tidak memiliki array asosiatif seperti PHP.
Ada berbagai solusi untuk apa yang Anda lakukan, seperti menggunakan Peta, tetapi itu tergantung pada bagaimana Anda ingin mencari informasi. Anda dapat dengan mudah menulis kelas yang menyimpan semua informasi Anda dan menyimpan instance mereka dalam sebuah
ArrayList
.Lalu...
Jadi Anda dapat mengaksesnya seperti ...
sumber
Anda dapat melakukannya melalui Maps. Sesuatu seperti
Tetapi ketika Anda mulai menggunakan Java saya yakin Anda akan menemukan bahwa jika Anda membuat kelas / model yang mewakili data Anda akan menjadi pilihan terbaik Anda. Saya akan lakukan
sumber
Tidak ada yang namanya array asosiatif di Jawa. Kerabat terdekatnya adalah a
Map
, yang diketik dengan kuat, namun memiliki sintaks / API yang kurang elegan.Ini adalah yang terdekat yang bisa Anda dapatkan berdasarkan contoh Anda:
sumber
LazyMap.decorate
danInstantiateFactory
dan hal-hal untuk?Lihatlah antarmuka Peta , dan pada kelas konkret HashMap .
Untuk membuat Peta:
Untuk menambahkan pasangan nilai kunci:
Untuk mengambil nilai yang terkait dengan kunci:
Dan tentu saja, Anda dapat membuat array dari Maps, seperti yang Anda inginkan:
sumber
Yah saya juga sedang mencari array Asosiatif dan menemukan Daftar peta sebagai solusi terbaik.
sumber
Jawa setara dengan hash Perl
sumber
Java tidak memiliki array asosiatif, hal terdekat yang bisa Anda dapatkan adalah antarmuka Peta
Ini contoh dari halaman itu.
Jika dijalankan dengan:
Anda akan mendapatkan:
sumber
Array asosiatif di Jawa seperti di PHP:
Info lebih lanjut, lihat Kelas SoftHashMap: https://shiro.apache.org/static/1.2.2/apidocs/org/apache/shiro/util/SoftHashMap.html
sumber
Gunakan ArrayList <Map <String, String>>
Di sini contoh kode:
Output:
produk: [{id = 0001, nama = prod1}, {id = 0002, nama = prod2}]
sumber
Di JDK 1.5 (http://tinyurl.com/3m2lxju) bahkan ada catatan: "CATATAN: Kelas ini sudah usang. Implementasi baru harus mengimplementasikan antarmuka Peta, daripada memperluas kelas ini." Salam, N.
sumber
Ya, ini membutuhkan iterasi untuk mencari nilai dengan kunci, tetapi jika Anda membutuhkan semuanya, ini akan menjadi pilihan terbaik.
sumber
Sebenarnya Java mendukung array asosiatif mereka disebut kamus!
sumber
Berpikir lebih banyak tentang itu, saya ingin membuang tupel sebagai cara yang lebih umum untuk menangani masalah ini. Meskipun tupel bukan asli Java, saya menggunakan Javatuples untuk memberi saya fungsionalitas yang sama yang akan ada dalam bahasa lain. Contoh cara menangani pertanyaan yang diajukan adalah
Saya suka pendekatan ini karena dapat diperluas hingga tiga kali lipat dan pengelompokan lebih tinggi dengan api menyediakan kelas dan metode.
sumber
Mengenai komentar PHP 'Tidak, PHP tidak akan menyukainya'. Sebenarnya, PHP akan terus chugging kecuali Anda menetapkan beberapa tingkat pengecualian / kesalahan yang sangat terbatas (untuk PHP), (dan mungkin bahkan tidak saat itu).
Apa yang AKAN terjadi secara default adalah bahwa akses ke elemen array yang tidak ada / di luar batas 'membatalkan' nilai yang Anda tetapkan. TIDAK, itu BUKAN nol. PHP memiliki garis keturunan Perl / C, dari apa yang saya mengerti. Jadi ada: variabel tidak disetel dan tidak ada, nilai-nilai yang diatur tetapi NULL, nilai-nilai Boolean False, maka segala sesuatu yang lain yang memiliki bahasa standar. Anda harus menguji mereka secara terpisah, ATAU memilih fungsi / sintaks bawaan evaluasi KANAN.
sumber