zoukankan      html  css  js  c++  java
  • 添加对象到 HashSet 里的规则是

    下面的解释取自百度知道的一位网友的回答,链接如下:

    java HashSet类添加元素的问题_百度知道
    http://zhidao.baidu.com/link?url=9bcAnolev1EBeFI_886-X0UW7iieezybtf2kqTXVelGWLyquC7nc6_WHDHhPej6Q-_U-glxnivENmEczaZNM5-bu_X-v7AoDAWXP5roiSu3

    HashSet 比较两个对象是否相同的机制是先后比较:
    1、hashCode()
    2、 == (比较内存地址)
    3、equals()
    第一步就是比较两个对象的hash值是否相同(注意这里的hash值是经过处理的,为了使散列更均匀);
    hash值相同的就会散列到一组,不相同就会散列到不同的组(此时就不会再继续比较了,因为在不同组hashset认为他们就是不同的对象);
    第二步,如果hash值相同,则进行连等判断,即比较内存地址是否相同。如果不相同那么hashset就认为他们肯定不是相同的对象,如果内存地址相等(这一步最主要的目的其实就是删除元素的时候判断)那么进行第三步;
    第三步,如果equals返回相同,那么他们就是彻彻底底的相同的对象,不能添加到set里,如果返回不同那么他们就不是彻底的不相同,就可以添加到一个set里。

  • 相关阅读:
    python 按行读取判断是否为空
    python获取目录下所有文件
    Kolakoski
    最小背包问题
    python 求第k个最大数
    python 求最大子序列
    爬取数据的程序
    文件对比程序
    trsd_extract_EDSD_new
    tred_extract_EDED_new
  • 原文地址:https://www.cnblogs.com/liweiwei1419/p/4310339.html
Copyright © 2011-2022 走看看