So aktualisieren Sie einen Wert für einen Schlüssel in einer HashMap?
Ich bin mit HashMap wie diese,
HashMap<String,Set<String>> map = new HashMap<String,Set<String>>();
Ich versuche zu tun, bevor das hinzufügen eines Elements in map
,
- Wollen, um zu überprüfen, ob die
key
vorhanden ist oder nicht, kann ich es durch die Verwendungmap.containsKey()
. - Wenn der Schlüssel vorhanden ist, möchte ich überprüfen Sie die Größe der
Set
jeweiligen Taste. - Wenn
size <= 1
ich will hinzufügen, ein element in diesem Satz.
if (map.containsKey("x")) {Set<String> s = map.get("x"); if (s.size() <= 1) { s.add("y");}}
(ach, nur falsch verstanden, dass der Schlüssel aktualisiert werden sollen - warum?!)Warum würden Sie aktualisieren möchten, die Taste? Sie können nicht, und Sie sollten nicht denken, tun Sie es
InformationsquelleAutor Vinesh | 2012-09-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Würde ich nicht verwenden, containsKey und get, denn dies bedeutet zwei Suchvorgänge, wenn Sie nur einen benötigen.
Das einzige problem mit diesem ist, dass der Wert immer
null
es sei denn, Sie legen Sie es irgendwo so was können Sie wollen, istEs ist ungewöhnlich, dass ein Satz mit einer maximalen Größe von 2. Gibt es dafür irgendeinen Grund?
InformationsquelleAutor Peter Lawrey
Klingt das so:
Nun, entweder der Letzte Punkt war schlecht formuliert (d.h. Sie aktualisieren möchten Setzen, verbunden mit der-Taste), oder Sie wirklich wollen, Sie zu aktualisieren wird der Schlüssel selbst, in welchem Fall würden Sie wahrscheinlich haben, um einfach zu entfernen und einen neuen Eintrag hinzufügen.
Erteilen: Du meinst
== 0
statt<= 1
?OK, ich bin ein idiot. 🙂
Grant: keine Ahnung, was will er eigentlich hier zu tun. Es ist möglich, dass er will, um etwas hinzuzufügen, wenn die Größe 0 oder 1. Ich verließ seine ursprüngliche code.
Würde es etwas verbessern, nur
map.get(key)
und dann auf null prüfen, da ich vermute, wenn es keine solche Taste sollte Hinzugefügt werden, richtig?InformationsquelleAutor Tudor
Könnte man das set von der Karte mit Karte.get(String key).
Dann testen Sie die Größe des Satzes. Falls erforderlich, fügen Sie Ihrem element.
Jetzt können Sie entfernen Sie einfach den alten Satz aus der Karte mit Karte.remove(String key) und verbinden Sie es danach wieder mit put(String, Set);
InformationsquelleAutor sabre_raider