證明,我先構造了一個很大的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")));
}
}