我想克隆一个具有Object作为值的HashMap
。
它是如何运作的?
答案 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所建议的那样