map中存储的是引用,而不是对象本身

证明,我先构造了一个很大的List对象,用VisualVM查看的内存一下变大了,然后我for循环向map放进了100个之前的list,如果存的是对象,那内存会暴增,但是内存没有变化,证明map存的是引用,下面证明两个对象不一致,但是存进map后,对比两个对象为true的只能为引用

@Data
@Accessors(chain = true)
public class Person {
    private String name;
    private Integer age;

}
package com.netty.demos;

import com.netty.demos.client.entiy.Person;

import java.util.HashMap;
import java.util.Map;

public class Main {


    public static void main(String[] args) {
        Map<Integer, Person> mapA = new HashMap<Integer, Person>();
        Map<String, Person> mapB = new HashMap<String, Person>();
        Person per = new Person();
        Person per2 = new Person();
        Person per3 = new Person();
        per.setName("x");
        System.out.println("per  "+per.toString());
        per2=per;
        System.out.println("per2  "+per2.toString());
        mapA.put(1, per2);
        per.setName("y");
        System.out.println("per  "+per.toString());
        per3=per;
        System.out.println("per3  "+per3.toString());
        mapB.put("1", per3);
        System.out.println(per2==per3);
        System.out.println(mapA.get(1).equals(mapB.get("1")));
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章