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);// {}
    
}

  

posted @ 2018-06-04 09:56  Marydon  阅读(43852)  评论(2编辑  收藏  举报