克隆Hashmap并引用Object

时间:2011-11-20 20:42:02

标签: java hashmap clone

我想克隆一个具有Object作为值的HashMap。 它是如何运作的?

2 个答案:

答案 0 :(得分:0)

你的意思是:

public static <K, V extends MyObject> 
              HashMap<K, V> CloneHashMap (HashMap<K, V> input) {
    HashMap<K, V> output = new HashMap<K, V>();
    for(K key: input.keySet()) {
        output.put(key, (V)(input.get(key).clone()));           
    }
    return output;
}

其中MyObject是可克隆的对象:

public class MyObject implements Cloneable {

    @Override
    public Object clone() {     
        try {
            return super.clone();
        } catch (CloneNotSupportedException e) {            
            return null;
        }
    }
}

答案 1 :(得分:0)

目前尚不清楚你在问什么。您是否尝试克隆HashMap及其所有内容?或者你只是想创建一个地图的副本?

如果您只是想要一个Map的副本,您可以在HashMap上使用复制构造函数。

HashMap copy = new HashMap(sourceMap);

这将创建第二个地图,其中相同的键和值对象作为源地图。如果你想要一个深度克隆,意味着你想要新的但等效的对象,你需要做一些像@Tudor所建议的那样