Ask a question
Simple copying problem of Map object? ? ? ?
Solving the problem
Example 1: Copying the map object reference, just a simple reference, cannot solve the problem
[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); } }
Result:
[code]{AA=AA, A=A, AAA=AAA} {AA=AA, A=A, AAA=AAA, B=B}
Example 2: Map putAll in map implements simple type of copy
[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); } }
Result:
[code]{AA=AA, A=A, AAA=AAA} {AA=AA, A=A, AAA=AAA} {AA=AA, A=A, AAA=AAA, B=B}
Example 3: putAll in map is only shallow copy
[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<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()); } }
Result: As can be seen from the result, print mapAA The result is the same as mapBB, indicating that the copy of putAll is a simple shallow copy.
From the last result, it can be verified again, because changing the value of the A element in mapBB directly affects the element in mapAA The value of
[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
The above is the content of a small example of Java Map object copying. For more related content, please pay attention to the PHP Chinese website (m.sbmmt.com)!