java 深拷贝map
时间: 2024-08-31 12:02:04 浏览: 72
在 Java 中,对 Map 进行深拷贝通常意味着创建一个新的 Map,并将原 Map 中的所有键值对都复制到新 Map 中,而不仅仅是引用。这是因为如果只是浅拷贝,新 Map 和原 Map 将共享相同的底层数据结构,修改其中一个会影响另一个。以下是一个简单的示例,展示如何使用 Java 的 HashMap 实现深拷贝:
```java
import java.util.HashMap;
import java.util.Map;
public class DeepCopyMap<K, V> {
public static <K, V> Map<K, V> deepCopy(Map<K, V> originalMap) {
if (originalMap == null)
return null;
// 创建一个新的 HashMap 来存储深拷贝
Map<K, V> copiedMap = new HashMap<>(originalMap.size());
// 遍历原始 Map,添加新的键值对到拷贝中
for (Map.Entry<K, V> entry : originalMap.entrySet()) {
copiedMap.put(entry.getKey(), entry.getValue().clone()); // 如果 V 类型实现了 Cloneable,需要调用 clone() 方法
}
return copiedMap;
}
public static void main(String[] args) {
Map<String, String> original = new HashMap<>();
original.put("key1", "value1");
original.put("key2", "value2");
Map<String, String> copied = deepCopy(original);
// 修改原 Map 不影响深拷贝
original.put("newKey", "newValue");
System.out.println("Original map after modification: " + original);
System.out.println("Copied map: " + copied); // 输出不变,说明是深拷贝
}
}
```
阅读全文