【问题标题】:clone Hashmap with reference to Object [closed]参考 Object 克隆 Hashmap [关闭]
【发布时间】:2026-01-09 20:10:01
【问题描述】:

我想克隆一个HashMap,它有一个对象作为值。 它是如何工作的?

【问题讨论】:

标签: java hashmap clone


【解决方案1】:

你的意思是这样的:

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;
        }
    }
}

【讨论】:

    【解决方案2】:

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

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

    HashMap copy = new HashMap(sourceMap);
    

    这将创建第二个映射,其键和值对象与源映射相同。如果您想要一个深度克隆,这意味着您想要新但等效的对象,您需要执行@Tudor 建议的操作

    【讨论】: