zoukankan      html  css  js  c++  java
  • hashCode与eqauls

    <1>、hashCode

    1.用途:hashCode()方法用于计算对象的哈希码

    2.hashCode()在哈希表中起作用,如java.util.HashMap。

       如果对象在equals()中使用的信息都没有改变,那么hashCode()值始终不变。

       如果两个对象使用equals()方法判断为相等,则hashCode()方法也应该相等。

       如果两个对象使用equals()方法判断为不相等,则不要求hashCode()也必须不相等;但是开发人员  应该认识到,不相等的对象产生不相同的hashCode可以提高哈希表的性能。

    3.作用:当我们向哈希表(如HashSet、HashMap等)中添加对象object时,首先调用hashCode()方法计算object的哈希码,通过哈希码可以直接定位object在哈希表中的位置(一般是哈希码对哈希表大小取余)。如果该位置没有对象,可以直接将object插入该位置;如果该位置有对象(可能有多个,通过链表实现),则调用equals()方法比较这些对象与object是否相等,如果相等,则不需要保存object;如果不相等,则将该对象加入到链表中。

    <2>、equal

    1.用途:equals()方法用于判断两个对象是否相等

    2.自反性:x.equals(x)必须返回true。

       对称性:x.equals(y)与y.equals(x)的返回值必须相等。

       传递性:x.equals(y)为true,y.equals(z)也为true,那么x.equals(z)必须为true。

       一致性:如果对象x和y在equals()中使用的信息都没有改变,那么x.equals(y)值始终不变。

       非null:x不是null,y为null,则x.equals(y)必须为false。

    <3>、equals()和hashCode()都不是final方法,都可以被重写。

  • 相关阅读:
    对于字符串的重复字符的去除
    487-3279
    队列设计(转)
    动态创建JS
    前端技巧:禁止浏览器static files缓存篇(转)
    cas与NGINX整合(转)
    秒杀场景下MySQL的低效(转)
    html禁用缓存
    MD5随机盐值生成法
    SVN There are unfinished transactions detected
  • 原文地址:https://www.cnblogs.com/Jinxzzzz/p/8998694.html
Copyright © 2011-2022 走看看