Wie zu verwenden hashmap.ohne überschreiben der vorherigen Daten? (java)
Habe ich etwas entlang der Linien von:
public HashMap<Boolean, String> map = new HashMap();
map.put(this.inverted, "Inverted");
map.put(this.active, "Loading");
System.out.println(map.size());
nachdem Sie die Größe war immer 1, habe ich festgestellt, dass die Verwendung von map.gestellt wurde, überschreiben die vorherigen Daten. Ich bin versucht derzeit, die Iteration über die hashmap. Gibt es eine Möglichkeit zum hinzufügen von Zuordnungen, um es ohne überschreiben von vorherigen?
- stellen Sie sicher, dass die behaupten, die Felder, die invertiert und Wirkstoff sind nicht identisch, und es wird show 2
- Möglicherweise müssen Sie
Map<String, Boolean>
nichtMap<Boolean, String>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie erklärt Ihre HashMap wie: -
Nun, denken Sie nur, wie viele maximal-mapping können Sie in Ihrem
map
? Die Antwort, die Sie bekommen können denken, was alle Werte können IhreBoolean
Typ nehmen. Dies ist, weil, Sie kann keine doppelten Schlüssel in einerHashMap
.So, wahrscheinlich hast du es jetzt, dass man bei max nur
2 mappings
in Ihre Karte, eine fürtrue
und andere fürfalse
(In der Tat können Sie eine3rd
man auch, wie können Sie eine Zuordnung für einnull
Schlüssel zu in IhremHashMap
).So, in deinem Fall, wenn beide
this.inverted
undthis.active
sind entwedertrue
oderfalse
. Dann nur einer von Ihnen kann es, und das wäre der später-Wert eingefügt.Wahrscheinlich haben Sie bauen Ihre HashMap falsch. Sie sollte erklären, Ihre anzeigen als: -
Und jetzt können Sie zwei Zuordnungen wie: -
Weil
this.inverted.equals(this.active)
undthis.inverted.hashcode()==this.active.hashcode()
Müssen Sie vielleicht neu definieren, die equals-Methode für den Schlüssel.
true
oderfalse
.In der KARTE
Eines Objekts, die Google maps keys to values. Eine Karte ist nicht enthalten doppelte Tasten; jede Taste zuordnen kann, um mindestens einen Wert. ---> aus Anzeigen-Api
aus Ihrer Umsetzung, kann
this.inverted
undthis.active
beide haben denselben Wert.Überprüfen Sie die Eingabe einmal. drucken Sie das keySet, dann prüfen.
oder ändern Sie die Eingabe, um
Map<String, Boolean>
Als @Frank schlage vor, Sie sollten umkehren, deine Karte.
Wenn die Schlüssel die gleichen sind, wie der Vorherige Wert überschrieben, der in eine standard-Java-Karte. Wenn Sie dies nicht möchten, können Sie einen Blick auf eine multimap, die implementiert ist zum Beispiel in commons-collections. Es können verschiedene Werte für einen key.
Hashmap basiert auf Schlüssel/Wert-Paaren. Wenn Sie Ihre Schlüssel gleich sind (Sie haben den gleichen hashcode), es verhält sich wie du beschrieben hast.
Für Ihren Fall, stornieren Sie Ihre Schlüssel/Wert-Paare werden dir helfen.