Home > Java > javaTutorial > body text

Java Map object copy small example

黄舟
Release: 2017-01-17 15:16:19
Original
2390 people have browsed it

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);
    }
}
Copy after login

Result:

[code]{AA=AA, A=A, AAA=AAA}
{AA=AA, A=A, AAA=AAA, B=B}
Copy after login

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);
    }
}
Copy after login

Result:

[code]{AA=AA, A=A, AAA=AAA}
{AA=AA, A=A, AAA=AAA}
{AA=AA, A=A, AAA=AAA, B=B}
Copy after login

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());

    }
}
Copy after login

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
Copy after login

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 (www.php.cn)!


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template