决定数据结构应该使用哪个 hashCode() 实现是 hashmap API 的一部分。
向某些 API 提供未经您严格处理的信息,会使您无法控制。
使用默认的 hashCode() 实现将您希望管理的键与您不处理的内存地址耦合,并且您没有任何控制权。
假设有一天你会想要使用某种内存优化器,它会在内存中移动对象以实现一致性和更好的性能。您将无法再使用您的数据结构,因为它包含您的密钥的原始哈希地址。
从更实际的角度来看,
为了在整个程序中从数据结构中检索值,您必须保留对之前插入的所有键的引用(通过使用另一个数据结构)。您将无法使用在对象状态方面“相似”的键。
Person steve1 = new Person("Steve","21","engineer");
Person steve2 = new Person("Steve","21","engineer");
map.put(steve1,"great worker");
map.get(steve2);
// returns null because "steve2" is not considered a key like "steve1"
map.get(steve1);
// returns "great worker"