【发布时间】:2026-01-09 20:10:01
【问题描述】:
我想克隆一个HashMap,它有一个对象作为值。
它是如何工作的?
【问题讨论】:
我想克隆一个HashMap,它有一个对象作为值。
它是如何工作的?
【问题讨论】:
你的意思是这样的:
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;
}
}
}
【讨论】:
不清楚你在问什么。您是否尝试克隆 HashMap 及其所有内容?或者您只是想创建地图的副本?
如果您只是想要一个 Map 的副本,您可以使用 HashMap 上的复制构造函数。
HashMap copy = new HashMap(sourceMap);
这将创建第二个映射,其键和值对象与源映射相同。如果您想要一个深度克隆,这意味着您想要新但等效的对象,您需要执行@Tudor 建议的操作
【讨论】: