Saya perlu membuat peta kosong.
if (fileParameters == null)
fileParameters = (HashMap<String, String>) Collections.EMPTY_MAP;
Masalahnya adalah bahwa kode di atas menghasilkan peringatan ini: Ketik keselamatan: Tidak dicentang dari Map ke HashMap
Apa cara terbaik untuk membuat peta kosong ini?
java
dictionary
collections
hashmap
JorgeO
sumber
sumber
Jawaban:
1) Jika Peta tidak dapat diubah:
Anda harus menggunakan yang terakhir kadang-kadang ketika kompiler tidak dapat secara otomatis mencari tahu jenis Map yang dibutuhkan (ini disebut tipe inferensi ). Misalnya, pertimbangkan metode yang dideklarasikan seperti ini:
Saat meneruskan Map kosong langsung ke sana, Anda harus eksplisit tentang jenisnya:
2) Jika Anda ingin dapat mengubah Peta, misalnya:
(seperti yang ditunjukkan oleh tehblanx )
Tambahan : Jika proyek Anda menggunakan Jambu Biji , Anda memiliki alternatif berikut:
1) Peta yang tidak dapat diubah:
Memang, tidak ada keuntungan besar di sini dibandingkan dengan
Collections.emptyMap()
. Dari Javadoc :2) Peta yang dapat Anda modifikasi:
Maps
berisi metode pabrik serupa untuk membuat instance jenis peta lain juga, sepertiTreeMap
atauLinkedHashMap
.Pembaruan (2018) : Di Java 9 atau yang lebih baru, kode terpendek untuk membuat peta kosong yang tidak dapat diubah adalah:
... menggunakan metode pabrik praktis baru dari JEP 269 . 😎
sumber
Collections.emptyMap ()
sumber
Metode emptyMap dari kelas Koleksi .
sumber
Jika Anda membutuhkan instance HashMap, cara terbaik adalah:
Karena Map adalah antarmuka, Anda perlu memilih beberapa kelas yang membuat instance-nya jika Anda ingin membuat instance kosong. HashMap tampak sebagus yang lain - jadi gunakan saja itu.
sumber
Baik
Collections.emptyMap()
, atau jika jenis inferensi tidak berfungsi dalam kasus Anda,Collections.<String, String>emptyMap()
sumber
Karena dalam banyak kasus peta kosong digunakan untuk desain yang aman-null, Anda dapat menggunakan
nullToEmpty
metode utilitas:Demikian pula untuk set:
dan daftar:
sumber
Bagaimana dengan :
Peta <String, String> s = Collections.emptyMap ();
sumber