zoukankan      html  css  js  c++  java
  • hashCode()方法与equals()方法

    摘自别人的评论:http://blog.csdn.net/fhm727/article/details/5221792

    当向集合Set中增加对象时,首先集合计算要增加对象的hashCode码,根据该值来得到
    一个位置用来存放当前对象。

    如果在该位置没有一个对象存在的话,那么集合Set认为该对象在集合中不存在,直接
    增加进去。

    如果在该位置有一个对象存在的话,接着将准备增加到集合中的对象与该位置上的对象
    进行equals方法比较。

    如果该equals方法返回false,那么集合认为集合中不存在该对象,再进行一次散列,
    将该对象放到散列后计算出来的地址中。

    如果equals方法返回true,那么集合认为集合中已经存在该对象了,不再将该对象增加到集合中。


    重写equals方法的时候必须重写hashCode方法。如果一个类的两个对象,使用equals
    方法比较时,结果为true,那么这两个对象具有相同的hashCode。原因是equals方法为true,表明是同一个对象,它们的hashCode当然相同。(Object类的equals方法比较的是地址)

    3
    Object类的hashCode方法返回的是Object对象的内存地址。我们可以通过Integer.toHexString(newObject().hashCode());来得到。


    Java里面的hashSet中,如何判断两个对象是否相等?

    a.
    判断两个对象的hashCode是否相等。

    如果不相等,认为两个对象不相等。完毕

    如果相等,转入2

    b.
    判断两个对象是否equals

    如果不相等,认为两个对象不相等。
    如果相等,认为两个对象相等。

  • 相关阅读:
    第二次刷题感受——路漫漫其修远兮,吾将上下而求索。
    刷题就是照镜子——第一次刷2008年初赛题感受
    第一次集训刷题感受
    我的第一个博客
    预测房价的回归问题
    电影评论的情感极性分析
    语音助手是这样子的(二)
    语音助手是这样子的(一)
    软工第一次作业
    2020软件工程第五次作业_第二组
  • 原文地址:https://www.cnblogs.com/hsqdboke/p/5040574.html
Copyright © 2011-2022 走看看