Ich bin ein langjähriger Benutzer von Python und mag wirklich die Art, wie die Wörterbücher verwendet werden. Sie sind sehr intuitiv und einfach zu bedienen. Gibt es ein gutes Java-Pendant zu Pythons Wörterbüchern? Ich habe von Leuten gehört, die Hashmaps und Hashtables verwenden. Könnte jemand die Ähnlichkeiten und Unterschiede bei der Verwendung von Hashtabellen und Hashmaps im Vergleich zu Pythons Wörterbüchern erklären?Java Äquivalent zu Python Dictionaries
Antwort
Python dict
-Klasse ist eine Umsetzung dessen, was der Python-Dokumentation nennt informell „mapping types“. Intern wird dict
mit einer Hashtabelle implementiert.
Javas HashMap
Klasse ist eine Implementierung der Map
Schnittstelle. Intern wird HashMap
mit einer Hashtabelle implementiert.
Es gibt ein paar kleine Unterschiede in der Syntax, und ich glaube, dass die Implementierungen etwas anders abgestimmt sind, aber insgesamt sind sie völlig austauschbar.
Soweit mir bekannt ist (ich benutze nicht Java) Wörterbücher sind nur ein anderer Name für eine Hashmapp/Hashtable.
Grabbing-Code von http://www.fluffycat.com/Java/HashMaps/ es scheint, dass sie in einer sehr ähnlichen Weise verwendet werden, mit ein bisschen extra Java-Boiler-Platte.
Java selbst hat eine Wörterbuchschnittstelle, die von Hashtable implementiert wird. HashMap wird jedoch im Allgemeinen bevorzugt. –
@ Michael Myers: Dictionary ist veraltet, empfiehlt Oracle Map stattdessen zu verwenden http://docs.oracle.com/javase/7/docs/api/java/util/Dictionary.html –
Ein Unterschied zwischen den beiden ist, dass dict
strengere Anforderungen hat, welche Datentypen als Schlüssel dienen können. Java erlaubt jedem Objekt, als Schlüssel zu arbeiten - obwohl Sie darauf achten sollten, dass die Methode hashCode()
des Objekts einen eindeutigen Wert zurückgibt, der seinen internen Zustand widerspiegelt. Python benötigt Schlüssel, um seine Definition von hashable anzupassen, die angibt, dass der Hash-Code des Objekts sich niemals über seine Lebensdauer ändern darf.
Das ist richtig, aber es wird von keiner der beiden Sprachen tatsächlich durchgesetzt. Offensichtlich sollten Sie entweder in einer Java 'hashCode()' Methode oder in einer Python '__hash __()' Methode versuchen, einen eindeutigen Wert zurückzugeben, der den internen Zustand widerspiegelt.Wenn Sie in Java oder Python ein veränderbares Objekt haben, sollte es wahrscheinlich kein Hashtable-Schlüssel sein. Daher ist es sinnvoll, eine Ausnahme von den Methoden 'hashCode()' oder '__hash __()' zu werfen. –
Die Idee von Wörterbuch und Karte ist ähnlich. Beide Elemente enthalten wie
key1:value1, key2:value2 ... and so on
In Java wird Map
verschiedene Möglichkeiten, wie HashMap
implementiert oder TreeMap
usw. put(), get()
Operationen sind ähnlich
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
Siehe Dokumentation von HashMap in java8 https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html
- 1. Python-Äquivalent von Java Redirect.INHERIT
- 2. Python-Äquivalent von Java OutputStream?
- 3. Python: Java wirft Äquivalent in Python
- 4. Python Äquivalent zu phpinfo()
- 5. C# äquivalent zu Java charAt()?
- 6. java äquivalent zu C# ExpandoObject
- 7. R äquivalent zu `python -i`
- 8. Java-Äquivalent von Funktionszuordnung in Python
- 9. Verwenden von Dictionaries in Python anstelle der Case/Switch-Anweisung
- 10. String-Indizes oder Integer-Indizes für Dictionaries in Python?
- 11. Java-Äquivalent von Pythons getattr?
- 12. Java int Parallelität ++ Int äquivalent zu AtomicInteger.incrementAndGet()?
- 13. Gibt es ein Java-Äquivalent zu Libevent?
- 14. Gibt es ein Java-Äquivalent zu unputc?
- 15. Äquivalent für LinkedHashMap in Python
- 16. Composer Äquivalent in JAVA?
- 17. ObjectiveC-Blöcke Java-Äquivalent
- 18. Grids in Java-Äquivalent
- 19. Java-Äquivalent für .charCodeAt()
- 20. Java-Äquivalent von OpenLayers
- 21. Python-Äquivalent von PropertyUtilsBean
- 22. python - strtotime äquivalent?
- 23. Sapply Äquivalent in Python?
- 24. Callgrind Äquivalent für Java?
- 25. STXXL-Äquivalent in Java
- 26. Sind native Java-Methoden äquivalent zu statischen Java-Methoden?
- 27. Python-Äquivalent von Jstack?
- 28. Was ist das Python-Äquivalent von StringEntity in Java?
- 29. Was ist das Python-Äquivalent von RequestConfig in Java?
- 30. Java-Äquivalent von Python 'in' - für Set-Mitgliedschaft Test?
Kein Beispiel bereitgestellt :( –
@kami: Welche Art von Beispiel möchten Sie? –
Jedes Beispiel, das ein Java-Äquivalent von Python-Wörterbuch in Aktion darstellt. Eine nützliche Antwort enthält ein Beispiel, weil die meisten Leute hierher kommen, um Beispiele zu sehen und sie in ihrem Code zu verwenden. –