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 : Sélectionner tout - Visualiser dans une fenêtre à part
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?