提出問題
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<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); } }
結果:
[code]{AA=AA, A=A, AAA=AAA} {AA=AA, A=A, AAA=AAA, B=B}
例二:Map中的putAll實現簡單類型的複製
reee結果:範例三: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<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); } }
結果:從結果可以看出,印出mapAA 和mapBB,結果是一樣的,說明putAll的複製自己簡單的淺複製,
從最後一個結果,可再一次驗證,因為改變了mapBB中A元素的值,直接影響mapAA中元素的值
[code]{AA=AA, A=A, AAA=AAA} {AA=AA, A=A, AAA=AAA} {AA=AA, A=A, AAA=AAA, B=B}