2016-04-25 30 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()不在这里工作了 我想改变,在新的项目,但保留原始不受影响。如何使用一组类克隆的HashMap中的Java

回答

0

我想出了这个,但它似乎尴尬。有没有更好的办法?

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

是的,这是尴尬的objsCloned为null,并且从来没有得到一组合适的实例,因此它不能工作:) – Walfrat

+0

我改变objsCloned到正确的初始化,怎么啦? – user2568374

+0

我不知道如何工作映射和设置克隆功能,但我想这样很好,只要你总是使用hashet,这是一个适当的克隆。 – Walfrat