Stellen Sie eine Frage
Einfaches Kopieren des Kartenobjekts? ? ? ?
Das Problem lösen
Beispiel 1: Das Kopieren der Kartenobjektreferenz, nur einer einfachen Referenz, kann das Problem nicht lösen
[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); } }
Ergebnis:
[code]{AA=AA, A=A, AAA=AAA} {AA=AA, A=A, AAA=AAA, B=B}
Beispiel 2: putAll in Map implementiert eine einfache Typkopie
[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); } }
Ergebnis:
[code]{AA=AA, A=A, AAA=AAA} {AA=AA, A=A, AAA=AAA} {AA=AA, A=A, AAA=AAA, B=B}
Beispiel 3: putAll in Map ist nur eine flache Kopie
[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()); } }
Ergebnis: Aus dem Ergebnis ist ersichtlich, dass die Ergebnisse beim Drucken von mapAA und mapBB gleich sind, was darauf hinweist, dass es sich bei der Kopie von putAll um eine einfache flache Kopie handelt.
Aus dem letzten Ergebnis kann dies überprüft werden Wiederum, weil der Wert des Elements A in MapBB geändert wurde.
[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
Das Obige ist der Inhalt eines kleinen Beispiels für das Kopieren von Java Map-Objekten Inhalt, achten Sie bitte auf die chinesische PHP-Website (m.sbmmt.com)!