Neu in Hashtabellen mit einer einfachen Frage. Aus irgendeinem Grund hat mir das Googeln keine klare Antwort gegeben. Angenommen, ich habe eine <int,String>
Hashtabelle eingerichtet:
myHashtable.put(1,"bird");
myHashtable.put(2,"iguana");
und ich möchte "Vogel" in "Fisch" ändern (und den Index gleich lassen). Kann ich einfach einen put
Eintrag machen oder muss ich den Eintrag löschen oder was?
put
im Beispiel zurückgegebenen Wert , daher sehe ich nicht, wie relevant dieser Teil des Javadoc für Sie ist. Aber der Javadoc ist kristallklar ... der alte Wert wird zurückgegeben, falls es einen gab.Antworten:
Ja.
Wenn bereits eine Zuordnung zum angegebenen Schlüssel vorhanden ist, wird der alte Wert ersetzt (und zurückgegeben). Siehe
Hashtable.put()
.Für eine Umgebung mit mehreren Threads würde ich eine
ConcurrentHashMap
andereConcurrentMap
Implementierung empfehlen . ObwohlHashtable
synchronisiert, stehen jetzt komplexere Implementierungen für die gleichzeitige Zuordnung zur Verfügung, z. B. GuavasMapMaker
undCacheBuilder
.Denken Sie auch daran
Map
, dass die Typparameter vorhanden sein werden,<Integer, String>
da primitive Typparameter nicht unterstützt werden.quelle
the previous value of the specified key in this hashtable, or null if it did not have one
. Es klingt wie der alte Wert zurückgegeben wird ... trotzdem zurück zum Code, wird einen Blick darauf werfen.null
ist also eine gute Möglichkeit, um festzustellen, ob Sie beispielsweise nurput
einen neuen Schlüssel haben.int
als Schlüssel verwenden, da Java es automatisch in eine Ganzzahl kopiert.Map
hmmm, ich muss nur eine Zeile hinzufügen, um
myHashtable.put(1,"fish");
zu sehen, was erstaunlich ist
siehe diese Links: http://docs.oracle.com/javase/6/docs/api/java/util/Hashtable.html#put(K, V)
Returns: the previous value of the specified key in this hashtable, or null if it did not have one
quelle