Java 用自定义类作为 HashMap 的键

1、Java 用自定义类作为 HashMap 的键需要重写 hashCode ( ) 和 equals ( ) 两个方法。

2、 HashMap 中的比较 key 是先求出 key 的 hashCode 值,比较其是否相等,若相等再通过 equals ( ) 比较其Key值 是否相等 ,若相等则认为他们是相等的。若不相等则认为他们不相等。

自定义类中的 equals ( ) 和 hashCode ( ) 都继承自 Object 类。Object类的 hashCode ( ) 方法返回的是这个对象存储的默认内存地址。而 equals ( ) 比较的是内存地址是否相等。

因此,如果不重写这两个方法的话,即使有相同的两个对象,比较也是不相等的,因为它们的默认内存地址不可能相同。

猜你喜欢

转载自blog.csdn.net/weixin_41163113/article/details/85049827