>  기사  >  Java  >  Java Map 객체 복사 작은 예

Java Map 객체 복사 작은 예

黄舟
黄舟원래의
2017-01-17 15:16:192395검색

질문하기

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)!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.