zoukankan      html  css  js  c++  java
  • 哈希表的原理

     哈希表的原理:

        1,对对象元素中的关键字(对象中的特有数据),进行哈希算法的运算,并得出一个具体的算法值,这个值 称为哈希值。

        2,哈希值就是这个元素的位置。

        3,如果哈希值出现冲突,再次判断这个关键字对应的对象是否相同。如果对象相同,就不存储,因为元素重复。如果对象不同,就存储,在原来对象的哈希值基础 +1顺延。

        4,存储哈希值的结构,我们称为哈希表。

        5,既然哈希表是根据哈希值存储的,为了提高效率,最好保证对象的关键字是唯一的。

          这样可以尽量少的判断关键字对应的对象是否相同,提高了哈希表的操作效率。

     

      对于ArrayList集合,判断元素是否存在,或者删元素底层依据都是equals方法。

      对于HashSet集合,判断元素是否存在,或者删除元素,底层依据的是hashCode方法和equals方法。

     

      TreeSet:

        用于对Set集合进行元素的指定顺序排序,排序需要依据元素自身具备的比较性。

        如果元素不具备比较性,在运行时会发生ClassCastException异常。

        所以需要元素实现Comparable接口,强制让元素具备比较性,复写compareTo方法

        依据compareTo方法的返回值,确定元素在TreeSet数据结构中的位置。

        TreeSet方法保证元素唯一性的方式:就是参考比较方法的结果是否为0,如果return 0,视为两个对象重复,不存。

     

      注意在进行比较时,如果判断元素不唯一,比如,同姓名,同年龄,才视为同一个人。

        在判断时,需要分主要条件和次要条件,当主要条件相同时,再判断次要条件,按照次要条件排序。

     

      TreeSet集合排序有两种方式,Comparable和Comparator区别

        1:让元素自身具备比较性,需要元素对象实现Comparable接口,覆盖compareTo方法。

        2:让集合自身具备比较性,需要定义一个实现了Comparator接口的比较器,并覆盖compare方法,并将该类对象作为实际参数传递给TreeSet集合的构造函数。

        第二种方式较为灵活。

  • 相关阅读:
    新收入准则下的通用收入处理场景
    如果不先提出最佳问题,你怎么去找最佳答案呢?
    复星集团
    CFO的三重境界:阿里CFO蔡崇信教给我的那些事儿
    《让财务助推业务—业财融合》
    一、原材料、半成品、成品的采用标准成本法管理 [转发]
    顶级投行?IT->Data Analysis->Forecast->Future.
    SAP 合资公司解决方案
    SAP-关于分类账(Ledgers)的总结
    百度网盘目录树在线V2.0版功能介绍~
  • 原文地址:https://www.cnblogs.com/hanmy/p/14170830.html
Copyright © 2011-2022 走看看