hashcode和equals的关系

  • JAVA中为什么两个不同的对象hashCode有可能会相同?
    答:你说的那两种 都有可能相同 所以hashCode()是不可靠的!那它不可靠为什么还要用它?因为它计算起来快啊!这涉及到两个对象之间的比较 1.equals()相等的两个对象他们的hashCode()肯定相等,也就是用equals()对比是绝对可靠的。2.hashCode()相等的两个对象他们的equal()不一定相等,也就是hashCode()不...
  • java中重写equals方法为什么要重写hashcode方法说明
    答:1、重写equals方法时需要重写hashCode方法,主要是针对Map、Set等集合类型的使用;a: Map、Set等集合类型存放的对象必须是唯一的;b: 集合类判断两个对象是否相等,是先判断equals是否相等,如果equals返回TRUE,还要再判断HashCode返回值是否ture,只有两者都返回ture,才认为该两个对象是相等的。2、由于Object...
  • java 中 equals() 相等的两个对象,hashcode() 一定相等
    答:在java中,equals和hashcode是有设计要求的,equals相等,则hashcode一定相等,反之则不然。为何会有这样的要求?在集合中,比如HashSet中,要求放入的对象不能重复,怎么判定呢?首先会调用hashcode,如果hashcode相等,则继续调用equals,也相等,则认为重复。如果重写equals后,如果不重写hashcode,则hashcode就...
  • 为什么在重写了equals()方法之后也必须重写hashCode()方法
    答:因为如果不这样做的话,就会违反Object.hashCode的通用约定,从而导致该类无法结合所有基于散列的集合一起正常运作,这样的集合包括HashMap、HashSet和Hashtable。另外在应用程序的执行期间,只要对象的equals方法的比较操作所用到的信息没有被修改,那么对这同一个对象调用多次,hashCode方法都必须始终如一地...
  • 请教java中的hashCode()方法 具体是什么意思?作用?一般用在什么地方...
    答:返回该对象的哈希码值。支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。hashCode 的常规协定是:在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改。从某一应用程序的一次...
  • 为什么覆写equals的时候一定要覆写hashCode
    答:3、 为什么equals()相等,hashCode就一定要相等,而hashCode相等,却不要求equals相等? 答案: - 因为是按照hashCode来访问小内存块,所以hashCode必须相等。 - HashMap获取一个对象是比较key的hashCode相等和equal为true。 之所以hashCode相等,却可以equal不等,就比如ObjectA和ObjectB他们都有属性name,那么hashCode都以name计...
  • 为什么重写了hashcode以后,用==比较两个同类型的对象还是false呢?_百度...
    答:==是比较两个变量是否引用的同一个对象,与是否重写了hashCode或equals无关。因为图中p1和p2引用的是两个对象,==比较的结果当然是false。如果将第2行改成:people p2=p1;==的结果就是true了。如果要比较值是否相等,得重写equals方法(如果直接使用从Object类继承的equals,比较的还是引用,与==相同...
  • equals为什么要重写hashcode?
    答:如果你重载了equals,比如说是基于对象的内容实现的,而保留hashCode的实现不变,那么很可能某两个对象明明是“相等”,而hashCode却不一样。这样,当你用其中的一个作为键保存到hashMap、hasoTable或hashSet中,再以“相等的”找另一个作为键值去查找他们的时候,则根本找不到。如果两个对象的堆内存...
  • java 中单链表的equals方法
    答:若是自定义类,一定要重新equals与hashCode方法,满足上述hashCode的2个关系。例如自己的User类有name和pass,一个简单的方案如下:public class User{ String name,pass;//get/set...public int hashCode() { return name.hashCode + pass.hashCode();} public boolean equals(Object o) { if(o in...
  • ...类的equals()方法的同时为什必须覆盖hashCode()方法?
    答:但hashCode()的值却不相等,这样你使用HashTable就会出现存进去的东西找不到。不要忽略这个问题,因为HashTable等等类用的非常多,很可能就在一个你不知道的地方间接地用到了。java类的一个原则就是:你定义的任何类,都要考虑覆盖equals和hashCode方法。否则你的类就不能给其他人或其他地方用。

  • 网友评论:

    徒常14715832088: java中的equals方法和hashcode的区别 -
    5110柏伊 : 共同点:两个方法,都直属Object麾下(也就是说,只有对象才有的方法); 还有就是在自定义对象的时候都建议重写这两个方法(为什么重写,用处太多,比如学了集合以后你就知道了) 不同点:equals方法主要是用来比较两个对象是否相同..返回的是一个布尔值!hashcode是系统环境底层根据哈希算法返回对象的一个int类型哈希值,通常用来确保对象唯一性!对于部分集合来说,直接依赖这二个方法!(可以根据实际需求不同,重写两个方法) 解释的不好,还请指点!

    徒常14715832088: java里equals和hashCode之间什么关系 -
    5110柏伊 : equals与hashcode的关系是:两个对象在equals相等的情况下,hashcode有可能相等也有可能不相等,而两个对象在hashcode不相等的情况下,equals也必定不相等.理解equals的应用:它是用于用户在进行对比的时候,这个时候对比的是内容...

    徒常14715832088: 在Java中hashcode() 和equals()的区别,简练点
    5110柏伊 : 默认情况下,也就是Object中定义的,equals返回的结果和直接用 == 操作符的结果一致,hashCode的结果对应于equals的结果.但是我们可以复写掉这两个方法,比如说: String s="asdf",s1=new String("asdf"); System.out.println(s.equals...

    徒常14715832088: Java中equals和 hashcode的用法 -
    5110柏伊 : hashcode 一般用来表示对象的唯一性.比如你在使用 hashset的时候,hashset是一个集合,而集合中的元素必须是唯一的,所以你向hashset中添加对象时,必须确保每个对象的hashcode是不同的.equals 的一般实现是通过比较对象的...

    徒常14715832088: 在Java中hashcode() 和equals()的区别,简练点 -
    5110柏伊 : 重写equals方法的时候必须重写hashCode方法.如果一个类的两个对象,使用equals方法比较时,结果为true,那么该两个对象具有相同的hashCode.原因是equals方法为true,表明是同一个对象,它们的hashCode当然相同.Ojbect类的hashCode方法返回的是Object对象的内存地址.可以通过Integer.toHexString(new Object().hashCode);来得到.

    徒常14715832088: equals和hashcode的关系. -
    5110柏伊 : 只是为了维护 hashCode 方法的常规协定,才要求用equals比较的两个对象的hashCode相同.equals()和hashCode()都来自java.lang.Object.你当然可以重写.比如a.equals(b).仅当a的内存地址相等时,才返回true.当然如String等类已经对...

    徒常14715832088: equals和hashcode谁的效率更高?为什么?谢谢解答 -
    5110柏伊 : 其实不能说谁比谁高,是hashcode+equals 效率最高 比如在hashset中,已经有1000个数据 如果只用equals,插入第1001个数据时,需要依次和前1000个比 如果用hashcode,可将前面数据的范围缩小(不同对象的hashcode可能相等),这样如果hashcode如果不同,直接false,相同时调用equals方法进一步确认

    徒常14715832088: Java对象的equals和hashCode的使用是什么?
    5110柏伊 : Java语言中,equals()和hashCode()两个函数的使用是紧密配合的,你要是自己设计其中一个,就要设计另外一个.在多数情况下,这两个函数是不用考虑的,直接...

    徒常14715832088: hash code、equals和“==”三者的关系 -
    5110柏伊 : 1.如果是基本变量,没有hashcode和equals方法,基本变量的比较方式就只有==;2.如果是变量,由于在java中所有变量定义都是一个指向实际存储的一个句柄(你可以理解为c++中的指针),在这里==是比较句柄的地址(你可以理解为指针的...

    徒常14715832088: java hascode和equals的关系?麻烦大神所得易懂点 -
    5110柏伊 : 当比较2个实例变量是否是同一个对象时候,会先用equals比较是否相等,如果相等,再比较hashCode是否一致,如果一致就是同一个对象,如果不一致就是不同对象.示例:12345678910111213141516171819 public class Student { //定义一...

    热搜:永久翻国外梯子windows \\ equal \\ java equals hashcode \\ 二建签名怎么获取hashcode \\ hashcode下载手机版 \\ ode to a nightingale \\ paperpass免费入口 \\ nevertheless \\ consequently \\ primarily \\ adequate \\ architectural \\ mathematical \\ object hashcode \\ hashcode下载apk \\ hashcode手机版下载 \\ inequality \\ competitive \\ 重写equals和hashcode \\ official \\

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网