Values in HashMap überschrieben?

Status
Nicht offen für weitere Antworten.

Scheuch

Mitglied
Hallo zusammen,

folgendes Minimalbeispiel

Code:
Map<Integer, Object> map_1 = new HashMap<Integer, Object>();

Map<String, Object> map_2 = new HashMap<String, Object>();
	
map_2.put("key", "value_1");	
map_1.put(0, map_2);
map_2.put("key", "value_2");
map_1.put(1, map_2);
map_2.put("key", "value_3");
map_1.put(2, map_2);

System.out.println(map_1.get(0));
System.out.println(map_1.get(1));
System.out.println(map_1.get(2));

ergibt

{key=value_3}
{key=value_3}
{key=value_3}

Nun die Frage: wieso ist der Output nicht

{key=value_1}
{key=value_2}
{key=value_3}

?

Warum überschreibt die HashMap map_1 trotz unterschiedlicher "Platzierung" der map_2s die keys 1 und 2 mit key 3? Habe ich da etwas übersehen oder missverstanden?

Beste Grüße
Scheuch
 

Landei

Top Contributor
Du speicherst in Maps keine Werte, sondern Referenzen. Alle drei Referenzen in map_1 verweisen auf dasselbe Objekt, auf das auch map_2 zeigt. Damit siehst du auch alle Änderungen in diesem Objekt, die über map_2 stattfinden.
 
S

SlaterB

Gast
alles was in Java gibt, ist immer eine Alternative für was anderes,

die Frage klingt aber so, als wenn du mit den Maps in deinem Beispiel unzufrieden wärest?

um
{key=value_1}
{key=value_2}
{key=value_3}
zu erhalten, ginge:

Code:
public class Test
{

    public static void main(String[] args)
        throws Exception
    {
        Map<Integer, Object> map_1 = new HashMap<Integer, Object>();

        Map<String, Object> map_2 = new HashMap<String, Object>();

        map_2.put("key", "value_1");
        map_1.put(0, map_2);
        map_2 = new HashMap<String, Object>();
        map_2.put("key", "value_2");
        map_1.put(1, map_2);
        map_2 = new HashMap<String, Object>();
        map_2.put("key", "value_3");
        map_1.put(2, map_2);

        System.out.println(map_1.get(0));
        System.out.println(map_1.get(1));
        System.out.println(map_1.get(2));
    }

}

oder

Code:
public class Test
{

    public static void main(String[] args)
        throws Exception
    {
        Map<Integer, Object> map_1 = new HashMap<Integer, Object>();

        put(map_1, 0, "key", "value_1");
        put(map_1, 1, "key", "value_2");
        put(map_1, 2, "key", "value_3");

        System.out.println(map_1.get(0));
        System.out.println(map_1.get(1));
        System.out.println(map_1.get(2));
    }

    private static void put(Map<Integer, Object> map_1, int i, String key, String value)
    {
        Map<String, Object> map_2 = new HashMap<String, Object>();
        map_2.put(key, value);
        map_1.put(i, map_2);
    }

}
 

Scheuch

Mitglied
Danke für dein Beispiel.
Ich bin nicht mit den Maps unzufrieden, im Gegenteil ;)
Nur tun sie gerade halt nicht das was sie sollen.

Mein Problem ist, das wird in dem Minimalbeispiel leider nicht deutlich (mea culpa), dass ich eine map_2 noch mehr key/-value-Paare habe, die sich aber nicht ändern sollen. Nur einer (hier "key") soll geändert und in der map_1 gespeichert werden. Die restlichen Wertepaare sollen in map_1.get(n) gleich bleiben. Und nun weis ich nicht, ob es dafür nicht eine andere, besser geeignete Klasse gibt.

EDIT:
Schaue mir gerade mal das zweite Beispiel an, das könnte was sein :)
 
S

SlaterB

Gast
hmm, was klares schwebt mir dazu auch nicht vor,
Inhalte von Maps kann man natürlich komplett kopieren, aber wer will das schon,

dass in map_1 mehrere nahezu gleiche Objekte drin sind, klingt aber auch nicht sinnvoll,
kannst du nicht nur map_2 verwenden und dort die unterschiedlichen Werte unter zusammengesetzten Keys wie "key0", "key1" usw. speichern?
wie auch immer
 

Scheuch

Mitglied
So, glaube ich habe es :D

Code:
Map<String, Object> map_3 = new HashMap<String, Object>();

map_3.putAll(map_2);
map_3.put("key", "value_2");
map_1.put(2, map_3);
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
rafi072001 Sortieren einer HashMap nach Values Java Basics - Anfänger-Themen 2
J Erhöhen eines Values als Integer bei gleichen Keys in HashMap Java Basics - Anfänger-Themen 12
C HashMap - alle keys haben values der letzten put-Anweisung Java Basics - Anfänger-Themen 3
G HashMap durchlaufen und alle keys mit values ausgeben Java Basics - Anfänger-Themen 4
P HashMap mehrere values auslesen. Java Basics - Anfänger-Themen 8
I Key mit 2 Values speichern - Hashmap? Java Basics - Anfänger-Themen 3
Z Rückgabe eines Values in umgekehrte richtung Java Basics - Anfänger-Themen 5
tom.j85 Map - Values nicht korrekt ersetzt (Abzählspiel) Java Basics - Anfänger-Themen 13
W Map doppelte Values löschen Java Basics - Anfänger-Themen 3
T Auf Values einer übergebenen Map zugreifen Java Basics - Anfänger-Themen 6
ruutaiokwu properties values automatisch escapen ??? Java Basics - Anfänger-Themen 3
K class Enum Methode: values() - finde ich nicht in der API Java Basics - Anfänger-Themen 2
I Verwendung von Constant Field Values Java Basics - Anfänger-Themen 4
P BufferedReader / FileReader Key und Values Java Basics - Anfänger-Themen 7
M Html Parsen / Values von Hidden Fields auslesen Java Basics - Anfänger-Themen 10
G ArrayList<Map.Entry.> nach den Values sortieren? Java Basics - Anfänger-Themen 8
J Addition von double values fehlerhaft? Java Basics - Anfänger-Themen 5
R Hashtable ohne Values Java Basics - Anfänger-Themen 5
F TableCellRenderer: Ändern des Values Java Basics - Anfänger-Themen 9
S HashMap mehrere Keys zu einem Value Java Basics - Anfänger-Themen 3
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
T HashMap Lsite gibt die sachen nicht aus wie gewollt. Java Basics - Anfänger-Themen 3
krgewb HashMap Java Basics - Anfänger-Themen 2
B Hashmap richtig bauen, die Tripel auf Zahl abbildet? Java Basics - Anfänger-Themen 10
"java.util.HashMap.get(Object)" is null Java Basics - Anfänger-Themen 10
berserkerdq2 Hashmap, wie prüfe ich ob ein Key schon existiert Java Basics - Anfänger-Themen 19
S Durch HashMap iterieren Java Basics - Anfänger-Themen 8
F gson mit einer Hashmap Java Basics - Anfänger-Themen 2
J JSON-HashMap Java Basics - Anfänger-Themen 3
J Hashmap Java Basics - Anfänger-Themen 13
C Hashmap zickt Java Basics - Anfänger-Themen 9
S HashMap contains() Methode Java Basics - Anfänger-Themen 1
Z Satz aufteilen und die Wörter zählen (HashMap) Java Basics - Anfänger-Themen 15
N enum Attribut von Objekten einer Hashmap ausgeben Java Basics - Anfänger-Themen 6
P Verschachtelte Hashmap Java Basics - Anfänger-Themen 6
I Sortiert eine HashMap nicht gleich wie eine ArrayList? Java Basics - Anfänger-Themen 1
B HashMap alphabetisch sortieren Java Basics - Anfänger-Themen 2
J HashMap Java Basics - Anfänger-Themen 6
M Enum-Variable HashMap zuweisen Java Basics - Anfänger-Themen 5
U Hashmap Iterator selbst implementieren Java Basics - Anfänger-Themen 10
N HashMap in List good practice? Java Basics - Anfänger-Themen 2
K Value eines HashMaps in einer HashMap wiedergeben. Java Basics - Anfänger-Themen 5
O Hashmap, ArrayList, LinkedList Java Basics - Anfänger-Themen 7
O HashMap - ArrayList Java Basics - Anfänger-Themen 29
J Hashmap langsamer als compareTo? Java Basics - Anfänger-Themen 23
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
N Methoden HashMap interne Werte miteinander vergleichen Java Basics - Anfänger-Themen 7
W The type Long is not visible HashMap Java Basics - Anfänger-Themen 4
M Objekt mit Hashmap vergleichen Java Basics - Anfänger-Themen 22
S Gibt es für die Klasse HashMap Generic Implementierungen? Java Basics - Anfänger-Themen 11
J Hashmap auslesen Java Basics - Anfänger-Themen 7
F HashMap sortieren <String, Long> Java Basics - Anfänger-Themen 3
GreenTeaYT HashMap dupliziert meine Elemente? Java Basics - Anfänger-Themen 2
shiroX Methoden Morse-Code Übersetzer mit HashMap Java Basics - Anfänger-Themen 5
E HashMap Problem Java Basics - Anfänger-Themen 5
P Hashmap anstatt LinkedList? Java Basics - Anfänger-Themen 6
T HashMap und die Methoden Java Basics - Anfänger-Themen 13
N Methoden Interaktives PDF mit HashMap befüllen Java Basics - Anfänger-Themen 0
Z Hashmap auseinandernehmen und analysieren Java Basics - Anfänger-Themen 7
B Durchlaufen von Hashmap und Arraylist Java Basics - Anfänger-Themen 8
F HashMap oder welches Array? Java Basics - Anfänger-Themen 4
T HashMap Java Basics - Anfänger-Themen 24
L Hashmap mit variablem Key Java Basics - Anfänger-Themen 9
M Collections Probleme mit Hashmap Java Basics - Anfänger-Themen 4
N Collections String in HashMap umwandeln Java Basics - Anfänger-Themen 3
Z HashMap richtig benutzen Java Basics - Anfänger-Themen 2
lgund HashMap // TS3 Query Java Basics - Anfänger-Themen 7
Z Hashmap Iterator löscht nicht Java Basics - Anfänger-Themen 8
E Hashmap Wert auslesen Java Basics - Anfänger-Themen 2
S Printstream für einen Hashmap Loop Java Basics - Anfänger-Themen 1
dat_vin OOP Hashmap und Attribute Java Basics - Anfänger-Themen 7
C Check ob eine HashMap schon existiert Java Basics - Anfänger-Themen 16
P Vererbung Eigene HashMap Variante Java Basics - Anfänger-Themen 2
R Hashmap in anderer Klasse nicht benutzbar Java Basics - Anfänger-Themen 1
T Java Hashmap Java Basics - Anfänger-Themen 3
L Gibt es etwas wie "HashMap <String, String, String> Java Basics - Anfänger-Themen 9
K HashMap mit Daten aus ArrayList befüllen Java Basics - Anfänger-Themen 14
S OOP Klasse mit static-Eigenschaften - HashMap füllen Java Basics - Anfänger-Themen 6
O HashMap Fragen Java Basics - Anfänger-Themen 8
T HashMap Werte einfügen, durchsuchen und auslesen Java Basics - Anfänger-Themen 17
M Semantisches Problem HashMap/Netzwerk Java Basics - Anfänger-Themen 4
D HashMap Keys durchlaufen Java Basics - Anfänger-Themen 2
B Zugriff auf csv-Datei per hashmap Java Basics - Anfänger-Themen 5
M HashMap keys ausgeben Java Basics - Anfänger-Themen 2
S In einer Hashmap Klassen regestrieren Java Basics - Anfänger-Themen 2
H Collections Was ist schneller - HashMap + Sort v TreeMap? Java Basics - Anfänger-Themen 75
F HashMap nach kleinstem Value durchsuchen Java Basics - Anfänger-Themen 11
G HashMap Java Basics - Anfänger-Themen 6
F Wortpaare - HashMap - ArrayList Java Basics - Anfänger-Themen 6
M HashMap Frage Java Basics - Anfänger-Themen 3
M HashMap - put() reagiert nicht? Java Basics - Anfänger-Themen 8
N Cast eines Objektes in eine Hashmap Java Basics - Anfänger-Themen 13
A CSV Zeilenweise einlesen und in einer HashMap speichern Java Basics - Anfänger-Themen 12
A Input/Output Hashmap in einem JPanel via JList anzeigen Java Basics - Anfänger-Themen 8
K HashMap auf leere Key-Value-Paare prüfen Java Basics - Anfänger-Themen 14
F Hilfe bei der HashMap. Java Basics - Anfänger-Themen 3
F HashMap vs. TreeMap Java Basics - Anfänger-Themen 5
B HashMap Java Basics - Anfänger-Themen 9
C Collections String[] als value in HashMap Java Basics - Anfänger-Themen 6
V Hashmap Iterieren Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben