存放在HashMap內的資料更新驗證
阿新 • • 發佈:2019-01-22
String str = testMap.get(0);
str = "222";
Log.e("ttttttest","testMap.get(0)-第四次-> "+testMap.get(0));
在HashMap的外部,更改存放在HashMap裡的物件的屬性值,這個時候HashMap裡的物件對應的值會改變嗎?如果存放在Map的Value的型別是String類呢? 這裡來驗證一下,首先定義一個Value值為String的Map testMap,一個Value值為Person的的Map testPersonMap;
然後編寫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,這個時候,打印出來,是我們放入時的值沒有錯。
這個時候更改string1的值,列印map裡的string1,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 = "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); 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));