Copie d'un hashmap imbriqué dans une nouvelle variable
Bonjour
SVP j'ai besoin de votre aide pour copier hashmap imbriqué dans une nouvelle variable.
malheureusement j'ai utilisé putAll mais je viens d’apercevoir que lorsqu'on ajoute dans copie un sous map d'un map qui existe alors meme variable original change !!!!!
voici un exp qui explique
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| Map<String, Map<String, Double> > Copie = new HashMap<>();
Map<String, Map<String, Double> > original = new HashMap<>();
Map<String, Double> s = new HashMap<>();
Map<String, Double> s2 = new HashMap<>();
s.put("aa",2.0);
s.put("bb",2.0);
original.put("A", s);
System.out.println("original = " + original);
original.get("A").put("cc",2.0);
System.out.println("original plus 1 elt dans map" + original);
Copie.putAll(original);
System.out.println("____________copie de original faite");
System.out.println(" copie = " + Copie);
//ajouter ds copie un nouveau elt cad ds map et non sous map
s2.put("ccccccccccccc",2.0);
Copie.put("nouveau",s2);
System.out.println("affichage apres ajout un nouveau elt dans map");
System.out.println(" original =" + original);
System.out.println(" copie = " + Copie);
//on ajoute dans le sous map existant
System.out.println("");
Copie.get("A").put("zzzzzzzzzzzzzzz",2.0);
System.out.println("affichage apres ajout un nouveau elt dans SOUS map");
System.out.println("AFFICHER original " + original);
System.out.println("AFFICHER copie" + Copie);
//quand l'ajout se fait dans sous map , les deux variable changent copie et original |
apres execution :
affichage apres ajout un nouveau elt dans SOUS map
AFFICHER original {A={aa=2.0, bb=2.0, cc=2.0, zzzzzzzzzzzzzzz=2.0}}
AFFICHER copie{nouveau={ccccccccccccc=2.0}, A={aa=2.0, bb=2.0, cc=2.0, zzzzzzzzzzzzzzz=2.0}}
donc comment faire pour assurer que les données original ne changent pas ??? obligé de faire une boucle?