java map对象复制_Java之Map对象复制小例子

提出问题

Map对象的简单复制问题????

解决问题

例一:map对象引用复制,只是简单的引用,解决不了问题[code]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 mapAA = new HashMap<>();

mapAA.put("A", "A");

mapAA.put("AA","AA");

mapAA.put("AAA","AAA");

System.out.println(mapAA);

//用mapBB对象去引用mapAA

Map mapBB = mapAA;

mapBB.put("B","B");

System.out.println(mapBB);

}

}

结果:[code]{AA=AA, A=A, AAA=AAA}

{AA=AA, A=A, AAA=AAA, B=B}

例二:Map中的putAll实现简单类型的复制[code]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 mapAA = new HashMap<>();

mapAA.put("A", "A");

mapAA.put("AA","AA");

mapAA.put("AAA","AAA");

System.out.println(mapAA);

Map mapBB = new HashMap<>();

//把mapAA的元素复制到mapBB中

mapBB.putAll(mapAA);

mapBB.put("B","B");

//打印出的mapAA应该不受影响

System.out.println(mapAA);

//打印出的mapBB应该多了元素B

System.out.println(mapBB);

}

}

结果:[code]{AA=AA, A=A, AAA=AAA}

{AA=AA, A=A, AAA=AAA}

{AA=AA, A=A, AAA=AAA, B=B}

例三:map中putAll只是浅复制[code]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 mapAA = new HashMap<>();

mapAA.put("A",new Person("AID","AY"));

mapAA.put("B",new Person("BID","AL"));

System.out.println(mapAA);

Map 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中元素的值[code]{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

以上就是Java之Map对象复制小例子的内容,更多相关内容请关注PHP中文网(www.php.cn)!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值