Saya adalah pengguna lama Python dan sangat menyukai cara penggunaan kamus. Mereka sangat intuitif dan mudah digunakan. Apakah ada Java yang bagus yang setara dengan kamus python? Saya pernah mendengar orang menggunakan hashmaps dan hashtables. Bisakah seseorang menjelaskan persamaan dan perbedaan penggunaan hashtables dan hashmaps versus kamus python?
sumber
Ide kamus dan peta serupa. Keduanya mengandung unsur suka
key1:value1, key2:value2 ... and so on
Di Jawa,
Map
diimplementasikan cara yang berbeda sepertiHashMap
, atauTreeMap
dll.put(), get()
Operasi serupaimport java.util.HashMap; Map map = new HashMap(); // Put elements to the map map.put("Ram", new Double(3434.34)); map.put("Krishna", new Double(123.22)); map.put("Hary", new Double(1378.00)); //to get elements map.get("Krishna"); # =123.22 map.get("Hary"); # = 1378.00
Lihat dokumentasi HashMap di java8 https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html
sumber
Sejauh yang saya tahu (saya tidak benar-benar menggunakan java) kamus hanyalah nama lain untuk hashmap / hashtable.
Mendapatkan kode dari http://www.fluffycat.com/Java/HashMaps/ tampaknya mereka digunakan dengan cara yang sangat mirip, dengan sedikit tambahan java boiler-plate.
sumber
Satu perbedaan di antara keduanya adalah
dict
persyaratan yang lebih ketat tentang tipe data apa yang dapat bertindak sebagai kunci. Java akan mengizinkan objek apa pun untuk bekerja sebagai kunci - meskipun Anda harus berhati-hati untuk memastikan bahwahashCode()
metode objek mengembalikan nilai unik yang mencerminkan status internalnya. Python membutuhkan kunci agar sesuai dengan definisi hashable , yang menetapkan bahwa kode hash objek tidak boleh berubah selama masa pakainya.sumber
hashCode()
metode Java atau dalam__hash__()
metode Python , Anda harus mencoba mengembalikan nilai unik yang mencerminkan keadaan internal. Baik di Java atau Python, jika Anda memiliki objek yang bisa berubah, itu mungkin tidak boleh menjadi kunci yang memiliki hashtable, jadi masuk akal untuk mengeluarkan pengecualian dari metodehashCode()
atau__hash__()
.