java 将Map拷贝到另一个Map对象当中

时间:2023-03-09 05:06:57
java 将Map拷贝到另一个Map对象当中

java 将Map拷贝到另一个Map对象当中

CreateTime--2018年6月4日09点46分

Author:Marydon

1.需求说明

  将一个MapA对象中所有的键值对完全拷贝到另一个MapB对象中;

  另一个MapB对象中原来的键值保持不变(不受影响);

  拷贝成功后MapB对象当中的内容将不再随着MapA中内容的变化而变化。

2.代码实现

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* 复制map对象
* @explain 将paramsMap中的键值对全部拷贝到resultMap中;
* paramsMap中的内容不会影响到resultMap(深拷贝)
* @param paramsMap
* 被拷贝对象
* @param resultMap
* 拷贝后的对象
*/
public static void mapCopy(Map paramsMap, Map resultMap) {
if (resultMap == null) resultMap = new HashMap();
if (paramsMap == null) return; Iterator it = paramsMap.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
Object key = entry.getKey();
resultMap.put(key, paramsMap.get(key) != null ? paramsMap.get(key) : ""); }
}

3.测试

public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>(1);
map.put("name", "Marydon");
Map<String, Object> map2 = new HashMap<String, Object>(1);
map2.put("age", 20);
// 测试一:是否实现拷贝
mapCopy(map2, map);
System.out.println(map);// {age=20, name=Marydon}
System.out.println(map2);// {age=20}
// 测试二:拷贝后的map对象是否受原map对象的影响
map2.clear();
System.out.println(map);// {age=20, name=Marydon}
System.out.println(map2);// {} }