map的克隆
来源:互联网 发布:网络课程的英文 编辑:程序博客网 时间:2024/05/22 12:01
例一:map对象引用复制,只是简单的引用,解决不了问题
package com.evada.de;import java.util.HashMap;import java.util.Map;/** * Created by Ay on 2016/5/11. */public class RedisTest { public static void main(String[] args) { Map<String,String> mapAA = new HashMap<>(); mapAA.put("A", "A"); mapAA.put("AA","AA"); mapAA.put("AAA","AAA"); System.out.println(mapAA); //用mapBB对象去引用mapAA Map<String,String> mapBB = mapAA; mapBB.put("B","B"); System.out.println(mapBB); }}
结果:
{AA=AA, A=A, AAA=AAA}{AA=AA, A=A, AAA=AAA, B=B}
例二:Map中的putAll实现简单类型的复制
package com.evada.de;import java.util.HashMap;import java.util.Map;/** * Created by Ay on 2016/5/11. */public class RedisTest { public static void main(String[] args) { Map<String,String> mapAA = new HashMap<>(); mapAA.put("A", "A"); mapAA.put("AA","AA"); mapAA.put("AAA","AAA"); System.out.println(mapAA); Map<String,String> mapBB = new HashMap<>(); //把mapAA的元素复制到mapBB中 mapBB.putAll(mapAA); mapBB.put("B","B"); //打印出的mapAA应该不受影响 System.out.println(mapAA); //打印出的mapBB应该多了元素B System.out.println(mapBB); }}
结果:
{AA=AA, A=A, AAA=AAA}{AA=AA, A=A, AAA=AAA}{AA=AA, A=A, AAA=AAA, B=B}
例三:map中putAll只是浅复制
package com.evada.de;import java.util.HashMap;import java.util.Map;class Person{ private String id,name; Person(String id,String name){ this.id = id; this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }}/** * Created by Ay on 2016/5/11. */public class RedisTest { public static void main(String[] args) { Map<String,Person> mapAA = new HashMap<>(); mapAA.put("A",new Person("AID","AY")); mapAA.put("B",new Person("BID","AL")); System.out.println(mapAA); Map<String,Person> mapBB = new HashMap<>(); /** 把mapAA中的元素复制到mapBB中 **/ mapBB.putAll(mapAA); /** 修改mapBB中A元素值,如果mapAA中的元素A受影响,说明是浅复制 **/ Person person = mapBB.get("A"); person.setName("Ay_New"); System.out.println(mapBB); System.out.println("mapAA 的A元素value值:" + mapAA.get("A").getName()); }}
结果:从结果可以看出,打印mapAA 和mapBB,结果是一样的,说明putAll的复制自己简单的浅复制,
从最后一个结果,可再一次验证,因为改了mapBB中A元素的值,直接影响到mapAA中元素的值
{A=com.evada.de.Person@71bc1ae4, B=com.evada.de.Person@6ed3ef1}{A=com.evada.de.Person@71bc1ae4, B=com.evada.de.Person@6ed3ef1}mapAA 的A元素value值:Ay_New
如何实现深复制呢,可以看我的一篇关于《论clone深层复制和浅层复制》文章
阅读全文
1 0
- map的克隆
- NYOJ 285 寻找克隆人(map+计数)
- java的克隆(深克隆和浅克隆)
- 深克隆和浅克隆的概念
- java的深克隆与浅克隆
- Java的浅克隆与深克隆
- Java的深克隆和浅克隆
- js的浅克隆和深度克隆
- Java的深克隆与浅克隆
- Java的浅表克隆和深表克隆
- js的浅克隆和深度克隆
- 克隆ops的过程
- 克隆管理员帐号的方法
- 招聘网站的克隆
- 对象克隆的分析
- php对象的克隆
- 对象的克隆(clone)
- BSP包的克隆
- Beyond sliding windows-Object Localizationby Efficient Subwindow Search论文阅读
- 学习笔记 二叉搜索树2
- 测试2
- 例题1.13 派 Pie UVALive
- getContextPath方法
- map的克隆
- Opencv3.1.0+opencv_contrib配置及使用SIFT测试
- Apache基本配置
- 坑死人不偿命之微信支付回调
- 目标检测任务中图片标注工具LabelImg等
- 顶层const与底层const
- 哈希表平均查找长度
- java中的定时器的使用
- Could not calculate build plan