Ich bin ein langjähriger Benutzer von Python und mag die Art und Weise, wie die Wörterbücher verwendet werden. Sie sind sehr intuitiv und einfach zu bedienen. Gibt es ein gutes Java-Äquivalent zu Pythons Wörterbüchern? Ich habe von Leuten gehört, die Hashmaps und Hashtabellen verwenden. Könnte jemand die Ähnlichkeiten und Unterschiede bei der Verwendung von Hashtabellen und Hashmaps im Vergleich zu Pythons Wörterbüchern erklären?
quelle
Die Idee von Wörterbuch und Karte ist ähnlich. Beide enthalten Elemente wie
In Java
Map
wird verschiedene Möglichkeiten , wie implementiertHashMap
, oderTreeMap
usw.put(), get()
Operationen sind ähnlichSiehe Dokumentation von HashMap in Java8 https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html
quelle
Soweit mir bekannt ist (ich verwende eigentlich kein Java), sind Wörterbücher nur ein anderer Name für eine Hashmap / Hashtabelle.
Wenn Sie sich den Code von http://www.fluffycat.com/Java/HashMaps/ holen, werden sie anscheinend auf sehr ähnliche Weise verwendet, mit etwas zusätzlicher Java-Boiler-Platte.
quelle
Ein Unterschied zwischen beiden besteht darin, dass
dict
strengere Anforderungen an die Datentypen gestellt werden, die als Schlüssel fungieren können. Mit Java kann jedes Objekt als Schlüssel verwendet werden. Sie sollten jedoch darauf achten, dass diehashCode()
Methode des Objekts einen eindeutigen Wert zurückgibt, der den internen Status widerspiegelt. Python benötigt Schlüssel, die zu seiner Definition von Hashable passen. Dies gibt an, dass sich der Hashcode des Objekts während seiner Lebensdauer niemals ändern darf.quelle
hashCode()
Methode oder in einer Python-__hash__()
Methode versuchen, einen eindeutigen Wert zurückzugeben, der den internen Status widerspiegelt. Wenn Sie in Java oder Python ein veränderbares Objekt haben, sollte es wahrscheinlich kein Hashtabellenschlüssel sein. Daher ist es sinnvoll, eine Ausnahme von den MethodenhashCode()
oder__hash__()
auszulösen.