질문하기
Map 객체 단순 복사? ? ? ?
문제 해결
예 1: 단순 참조인 지도 객체 참조 복사로는 문제를 해결할 수 없습니다
[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}
예 2: 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); } }
를 구현합니다. 결과:
[code]{AA=AA, A=A, AAA=AAA} {AA=AA, A=A, AAA=AAA} {AA=AA, A=A, AAA=AAA, B=B}
예 3: map의 putAll은 단순한 복사본입니다.
[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()); } }
결과: 가능한 대로 결과를 보면 mapAA를 인쇄한 결과는 mapBB와 동일하여 putAll의 복사본이 단순 얕은 복사본임을 알 수 있다.
마지막 결과에서는 의 값이 변경되었기 때문에 다시 확인할 수 있다. mapBB의 요소는 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
의 값 위 내용은 Java의 Map 객체 복사에 대한 작은 예의 내용입니다. 자세한 내용은 PHP 중국어 웹사이트(www. .php.cn)!