2016-04-25 9 views
0
HashMap<String, Set<Myclass>> mapNew = new HashMap<String, Set<Myclass>>(); 

for (Map.Entry<String, Set<Myclass>> entry : mapOrig.entrySet()) { 
     mapNew.put(entry.getKey(), entry.getValue().clone()); 
    } 

.clone() funktioniert nicht hier Ich mag ein Element in den neuen ändern, aber das Original unberührt lassen.Wie man mit einem Satz von Klassen in Java klonen HashMap

Antwort

0

Ich kam auf das aber es scheint peinlich. Gibt es einen besseren Weg?

for (Map.Entry<String, Set<Myclass>> entry : mapOrig.entrySet()) { 
     Set<Myclass> objs = entry.getValue(); 
     Set<Myclass> objsCloned = new HashSet<Myclass>(); 
     for(Myclass obj : objs) 
     { 
      objsCloned.add(obj.clone()); 
     } 

     mapNew.put(entry.getKey(), objsCloned); 
    } 
+1

Ja, das ist peinlich objsCloned null ist und nie eine richtige Instanz einer Set bekommen, so dass es nicht funktioniert, kann :) – Walfrat

+0

ich objsCloned zu einem richtigen init geändert, wie jetzt? – user2568374

+0

Ich weiß nicht, wie funktioniert map und Set-Klon-Funktion, aber ich denke, so ist es in Ordnung, solange Sie immer einen Hash verwenden, ist es eine ordnungsgemäße Klonen. – Walfrat