如下代码Map的key为一个对象,对象重写hashcode并且根据对象属性变化,如果对象的属性值发生变化,对象的hashcode也会变化,就不能取出原来的值,最终导致资源浪费。
import java.util.HashMap;
import java.util.Map;
public class Demo {
public static void main(String[] args) {
Map<User, String> map = new HashMap<>();
User user = new User();
user.name = "zhangsan";
System.out.println(user.hashCode());
map.put(user, "zhangsan");
System.out.println(map.get(user));
user.name = "lisi";
System.out.println(user.hashCode());
System.out.println(map.get(user));
}
private static class User {
String name;
@Override
public int hashCode() {
return System.identityHashCode(name);
}
}
}