Wie erstelle ich eine hash-Tabelle in Java?
Was ist der einfachste Weg, um erstellen Sie eine hash-Tabelle (oder ein assoziatives array,...) in Java? Mein google-fu hat sich ein paar Beispiele, aber gibt es einen standard-Weg, dies zu tun?
Und gibt es eine Möglichkeit zum Auffüllen der Tabelle mit einer Liste von Schlüssel->Wert-Paare ohne individuell Aufruf einer add-Methode auf das Objekt, für jedes paar?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beide Klassen befinden sich im java.util-Paket. Der Unterschied zwischen den 2 ist im folgenden erläutert jGuru FAQ-Eintrag.
Können Sie Doppel-Klammern zu setzen, bis die Daten. Sie noch nennen hinzufügen, oder setzen, aber es ist weniger hässlich:
Map
.Map<String,Integer> MYHASH = new Hashtable<String,Integer>()
Vergessen Sie auch nicht, dass sowohl Karte und Hashtable sind generisch in Java 5 und höher (als in jeder anderen Klasse in der Collections framework).
Was Edmund sagte.
Als für den Aufruf nicht .hinzufügen die ganze Zeit, Nein, nicht idiomatically. Würde es verschiedene hacks (speichern in einem array und Schleife), die Sie tun könnten wenn Sie wirklich wollten, aber ich würde nicht empfehlen es.
Einem problem mit deiner Frage ist, dass Sie nicht erwähnen, was in welcher form Ihre Daten, um mit zu beginnen. Wenn Ihre Liste von Paaren passiert, um eine Liste der Anzeigen.Eintrag Objekte, es wäre ziemlich einfach.
Nur werfen Sie diese raus, ist es ein (viel gescholtenen) Klasse namens java.util.Eigenschaften, die eine Erweiterung von Hashtable. Es erwartet lediglich die String-keys und Werte und ermöglicht das laden und speichern der Daten über Dateien oder streams. Das format der Datei liest und schreibt wie folgt:
Ich weiß nicht, ob das ist was du suchst, aber es gibt Situationen, in denen dies nützlich sein kann.
Es ist wichtig zu beachten, dass Java-hash-Funktion ist weniger als optimal. Wenn Sie möchten weniger Kollisionen und fast vollständige Eliminierung von re-hashing bei ~50% Kapazität, ich würde verwenden eine Buz-Hash-Algorithmus Buz-Hash
Dem Grund der Java-Hash-Algorithmus ist schwach, ist den meisten klar, wie es sich hashes, Strings.
"a".hash()
geben Sie die ASCII-Darstellung von"a"
-97
, so"b"
wäre98
. Der springende Punkt bei der Vermischung ist die Zuordnung eines beliebigen und "so zufällig wie möglich" - Nummer.Wenn Sie brauchen eine schnelle und schmutzige hash-Tabelle, mit allen Mitteln, verwenden Sie
java.util
. Wenn Sie auf der Suche nach etwas robuster, skalierbarer, schaute ich mich in der Umsetzung Ihrer eigenen.setzen Werte
...
erhalten max