Poser une question
Copie simple d'un objet Map ? ? ? ?
Résoudre le problème
Exemple 1 : Copier la référence de l'objet cartographique, juste une simple référence, ne peut pas résoudre le problème
[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); } }
Résultat :
[code]{AA=AA, A=A, AAA=AAA} {AA=AA, A=A, AAA=AAA, B=B}
Exemple 2 : putAll dans Map implémente une copie de type simple
[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); } }
Résultat :
[code]{AA=AA, A=A, AAA=AAA} {AA=AA, A=A, AAA=AAA} {AA=AA, A=A, AAA=AAA, B=B}
Exemple 3 : putAll dans map est juste une copie superficielle
[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()); } }
Résultat : le résultat montre que les résultats de l'impression de mapAA et mapBB sont les mêmes, indiquant que la copie de putAll est une simple copie superficielle
À partir du dernier résultat, cela peut être vérifié. encore une fois parce que A dans mapBB a été modifié. La valeur de l'élément affecte directement la valeur de l'élément dans 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
Ce qui précède est le contenu d'un petit exemple de copie d'objet Java Map Pour plus d'informations. contenu, veuillez faire attention au site Web PHP chinois (www.php.cn) !