3.Java hashCode() equals总结

1.hashCode存在的意义在于查找的快捷性,如Hashtable,HashMap等。hashCode是用来在散列存储结构中确定对象的存储地址的。

2.两个对象如果相同,那么两个对象的hash‘Code一定要相同。

3.如果对象的equals方法被重写,那么对象的hashCode也重写,并且产生hashCode使用的对象,一定要和equals方法中使用的一致。

4.两个对象的hashCode相同,并不一定表示两个对象就相同,只能够说明这两个对象在散列存储结构中,如Hashtable,他们存放在一起。

总结:hashCode是用来查找使用的,而equals是用来比较两个对象是否相等。

关系:

1.equals()相等的两个对象,hashCode()一定相等;

2.equals()不相等的两个对象,却并不能证明它们的hashCode()不相等

3.hashCode()不等,一定能推出equals()也不等;hashCode()相等,equals()可能相            等,也可能不等。

判断两个类是否相等,用equals。那么先用hashCode方法,来判断其hashCode是否相等,如果不等,那么两个类一定不等,如果相等,则两个类可能相等,也可能不等,这个时候就需要调用equals再去进行判断。这样做的好处就是提高了效率。因此在hashCode和equals方法中,做判断的内容不能相同,否则就失去了该项意义。

hashCode是一个标识,到散列表中去找该对象的一个标识,如果相同的hashCode的类放于相同的散列表中,然后在通过equals进一步选出散列表中对应的对象。因此相同标识下的类不能重复,这也是hashMap,hashSet 等存储数据的依据。

原文地址:https://www.cnblogs.com/pfzhu/p/10269551.html

时间: 2024-08-01 22:19:52

3.Java hashCode() equals总结的相关文章

Java hashCode(), equals()

转自:http://blog.csdn.net/fenglibing/article/details/8905007冯立彬的博客 以下是关于HashCode的官方文档定义: hashcode方法返回该对象的哈希码值.支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表. hashCode 的常规协定是: 在 Java 应用程序执行期间,在同一对象上多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是对象上 equals 比较中所用的信息没有

Java hashCode() 和 equals()的若干问题

原文:http://www.cnblogs.com/skywang12345/p/3324958.html 本章的内容主要解决下面几个问题: 1 equals() 的作用是什么? 2 equals() 与 == 的区别是什么? 3 hashCode() 的作用是什么? 4 hashCode() 和 equals() 之间有什么联系? 第1部分 equals() 的作用 equals() 的作用是 用来判断两个对象是否相等. equals() 定义在JDK的Object.java中.通过判断两个对

Java 重写 equals 与 hashCode 的注意事项

为什么重写 equals 的时候必须重写 hashCode 大家可能从很多教程中了解到: SUN官方的文档中规定"如果重定义equals方法,就必须重定义hashCode方法,以便用户可以将对象插入到散列(哈希)表中" 那么 SUN 公司是出于什么考虑做了这个规定呢? 在集合框架中的HashSet,HashTable和HashMap都使用哈希表的形式存储数据,而hashCode计算出来的哈希码便是它们的身份证.哈希码的存在便可以: 快速定位对象,提高哈希表集合的性能. 只有当哈希表中对

Java hashCode() 和 equals()的若干问题解答<转载自skywang12345>

本章的内容主要解决下面几个问题: 1 equals() 的作用是什么? 2 equals() 与 == 的区别是什么? 3 hashCode() 的作用是什么? 4 hashCode() 和 equals() 之间有什么联系? 第1部分 equals() 的作用 equals() 的作用是 用来判断两个对象是否相等. equals() 定义在JDK的Object.java中.通过判断两个对象的地址是否相等(即,是否是同一个对象)来区分它们是否相等.源码如下: public boolean equ

Java中equals和hashcode的区别?

Java中equals和hashcode方法是在Object对象中的,所以每个对象都有这两个方法,大多数时候我们为了实现特定需求需要重写这两个方法 equals和hashcode方法常用在同一个类中用于比较,尤其是在set集合中比较元素是否重复 equals方法返回true的两个对象,hashcode一定相同 hashcode相同的两个对象,equals方法不一定返回true 原文地址:https://www.cnblogs.com/qf123/p/8671141.html

Java hashCode() 和 equals()的若干问题解答

第1部分 equals() 的作用 equals() 的作用是 用来判断两个对象是否相等. equals() 定义在JDK的Object.java中.通过判断两个对象的地址是否相等(即,是否是同一个对象)来区分它们是否相等.源码如下: public boolean equals(Object obj) { return (this == obj); } 既然Object.java中定义了equals()方法,这就意味着所有的Java类都实现了equals()方法,所有的类都可以通过equals(

java中equals和==的区别 (转)

java中equals和==的区别  值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中. ==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同. equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同.  ==比较的是2个对象的地址,而equals比较的是2个对象的内容. 显然,当equals为true时,==不一定为true: 一.String中

Java的equals方法的使用技巧

Java的equals方法的使用技巧 1.业务场景: 在某个社交软件中,要求每个用户的用户名(name)必须独一无二,那么在每次增加新用户的时候,都要对该用户的注册名进行判断,如果当前用户名已经被占用,则无法为该用户创建账号,只能要求该新用户重新选择设定用户名. 2.解决思路: 考虑到这里比较的每一个用户这样的对象,而其的等价判断标准是name,因此我们可以考虑使用object类自带的equals()方法对其进行比较,其中在方法体中以判断标准name进行返回. 补充:对于不同的数据类型,其比较方

【转】Java中equals和==的区别

[转]Java中equals和==的区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值. 2.复合数据类型(类) 当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false. JAVA当中所有的类都是继承于Object这个基类的,