• JAVA基础:集合


    总结:

    哈希表

    哈希表就是散列表,将输入的值通过hash函数映射出一个相对应的数字就是索引,最后就形成了k-v键值对的形式

    为什么用哈希表

    就相当于一个密码对照表,因为无法逆向解密,所以把所有(或部分)hash预先算出来做成一个表,并记录与之对应的密码,当我们知道一个hash想解密是,就到这个表里进行查询,若有相同的hash存在,则知道了其对应的密码为什么要做这样一个表呢,就是为了提高破解速度,如果我们直接进行暴力破解,每一个密码都要进行计算得到hash,再将它与已知hash进行对比,这个计算过程会很耗时,有表的情况下只需要读取进行对比就可以了,速度上要快得多

    用哈希表的好处

    它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。

    哈希表(散列表)主要特点:

    1.将输入映射到数字

    2. 不同的输入产生不同的输出

    3. 相同的输入产生相同的输出

    4. 当填装因子超过阈值时,能自动扩展。填装因子 = 散列表包含的元素数 / 位置总数,当填装因子 =1,即散列表满的时候,就需要调整散列表的长度,自动扩展的方式是:申请一块旧存储容量 X 扩容系数的新内存地址,然后把原内存地址的值通过其中的 key 再次使用 hash 函数计算存储位置,拷贝到新申请的地址。

    5. 值呈均匀分布。这里的均匀指水平方向的,即数组维度的。如果多个值被映射到同一个位置,就产生了冲突,需要用链表来存储多个冲突的键值。极端情况是极限冲突,这与一开始就将所有元素存储到一个链表中一样。这时候查找性能将变为最差的 O(n),如果水平方向填充因子很小,但某些节点下的链表又很长,那值的均匀性就比较差。

  • 相关阅读:
    变量的创建和初始化
    HDU 1114 Piggy-Bank (dp)
    HDU 1421 搬寝室 (dp)
    HDU 2059 龟兔赛跑 (dp)
    HDU 2571 命运 (dp)
    HDU 1574 RP问题 (dp)
    HDU 2577 How to Type (字符串处理)
    HDU 1422 重温世界杯 (dp)
    HDU 2191 珍惜现在,感恩生活 (dp)
    HH实习 acm算法部 1689
  • 原文地址:https://www.cnblogs.com/CL-King/p/14686745.html
Copyright © 2020-2023  润新知