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")));
    }
}

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