标签:col hashmap 相同 new 调用 数值 快速 结合 return
在Object类中equals方法如下:
public boolean equals(Object obj) { return (this == obj); }
对于引用类型的对象,比较的是两者的内存地址。而hashCode:返回的是对象的内存地址。
在Object类的hashcode()方法上写到:
1、在JAVA程序执行期间,同一对象多次调用hashcode方法时,应返回相同的整数,前提是该对象equals时所用的值未被修改。
2、如果两个对象equals(Object o)相等,那么它们的hashcode值也应该相同。
3、如果两个对象的equals(Object o)不相等,那么它们的hashcode方法所得到的的整数值不一定不同。
hashcode是用于散列数据的快速存取,如利用HashSet/HashMap/Hashtable类来存储数据时,都是根据存储对象的hashcode值来进行判断是否相同的。如果我们将对象的equals方法重写而不重写hashcode,当我们再次new一个新的对象的时候,equals方法返回的是true,但是hashCode方法返回的就不一样了,如果需要将这些对象存储到结合中(比如:Set,Map ...)的时候就违背了原有集合的原则。
标签:col hashmap 相同 new 调用 数值 快速 结合 return
原文地址:https://www.cnblogs.com/wrl123/p/12063656.html