java 实现map深拷贝
时间: 2023-11-29 09:55:45 浏览: 189
实现深拷贝需要注意以下几点:
1. 对于基本类型,直接复制即可;
2. 对于引用类型,需要递归进行深拷贝;
3. 对于循环引用,需要使用 Map 来保存已经拷贝过的对象,避免出现无限递归的情况。
下面是一个简单的实现:
```java
import java.util.HashMap;
import java.util.Map;
public class DeepCopyMap {
public static void main(String[] args) {
Map<String, Object> map1 = new HashMap<>();
map1.put("key1", "value1");
map1.put("key2", new Integer(100));
Map<String, Object> map2 = new HashMap<>();
map2.put("key3", "value3");
map1.put("key4", map2);
map2.put("key5", map1);
Map<String, Object> map3 = deepCopy(map1);
System.out.println(map1);
System.out.println(map3);
}
public static Map<String, Object> deepCopy(Map<String, Object> map) {
Map<String, Object> newMap = new HashMap<>();
for (Map.Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
if (value instanceof Map) {
Map<String, Object> subMap = (Map<String, Object>) value;
if (subMap.containsKey(key)) {
newMap.put(key, subMap);
} else {
newMap.put(key, deepCopy(subMap));
}
} else {
newMap.put(key, value);
}
}
return newMap;
}
}
```
在上面的代码中,我们使用了递归的方式来实现深拷贝。对于循环引用的情况,我们使用了 Map 来保存已经拷贝过的对象,避免出现无限递归的情况。
阅读全文