String str = testMap.get(0);
str = "222";
Log.e("ttttttest","testMap.get(0)-第四次-> "+testMap.get(0));
在HashMap的外部,更改存放在HashMap里的对象的属性值,这个时候HashMap里的对象对应的值会改变吗?如果存放在Map的Value的类型是String类呢?
String str = testMap.get(0);
str = "222";
Log.e("ttttttest","testMap.get(0)-第四次-> "+testMap.get(0));
这里来验证一下,首先定义一个Value值为String的Map testMap,一个Value值为Person的的Map testPersonMap;
然后编写Person类,person 有一个name属性。
然后编写Person类,person 有一个name属性。
private Map<Integer, String> testMap = new HashMap<Integer, String>();
private HashMap testPersonMap = new HashMap<Integer, Persion>();
public class Persion {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
定义两个String变量string1和string2 放入testMap,这个时候,打印出来,是我们放入时的值没有错。
String string1 = "abc";
String string2 = "xyz";
testMap.put(0,String1);
testMap.put(1,string2);
Log.e("ttttttest","testMap.get(0)--> "+testMap.get(0));
Log.e("ttttttest","testMap.get(1)--> "+testMap.get(1));
这个时候更改string1的值,打印map里的string1, String1 = "111";
Log.e("ttttttest","testMap.get(0)-第二次-> "+testMap.get(0));
将更改后的string1放入map 打印 testMap.put(0,String1);
Log.e("ttttttest","testMap.get(0)-第三次-> "+testMap.get(0));
取出对应位置的string 更改后打印:
String str = testMap.get(0); str = "222"; Log.e("ttttttest","testMap.get(0)-第四次-> "+testMap.get(0));将String换成Person类来验证
Persion persion1 = new Persion();
persion1.setName("zhangsan");
Persion persion2 = new Persion();
persion2.setName("lisi");
testPersonMap.put(0,persion1);
testPersonMap.put(1,persion2);
Log.e("ttttttest","testPersonMap.get(0)--> "+((Persion)testPersonMap.get(0)).getName());
Log.e("ttttttest","testPersonMap.get(1)--> "+((Persion)testPersonMap.get(1)).getName());
persion1.setName("wangwu");
Log.e("ttttttest","testPersonMap.get(0)-第二次-> "+((Persion)testPersonMap.get(0)).getName());
testPersonMap.put(0,persion1);
Log.e("ttttttest","testPersonMap.get(0)-第三次-> "+((Persion)testPersonMap.get(0)).getName());
Persion persion = (Persion)testPersonMap.get(0);
persion.setName("zhaoliu");
Log.e("ttttttest","testPersonMap.get(0)-第四次-> "+((Persion)testPersonMap.get(0)).getName());
可以看出,对于普通的类来说,Map中存放的只是对象的引用,我们不管是在Map外更改对象的属性,还是将对象从Map中取出来更改对象,map中存放的对象都会改变。
String str = testMap.get(0); str = "222"; Log.e("ttttttest","testMap.get(0)-第四次-> "+testMap.get(0));