• JAVA基础:集合


    总结:

    哈希表

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

    为什么用哈希表

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

    用哈希表的好处

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

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

    1.将输入映射到数字

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

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

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

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

  • 相关阅读:
    Javascript操纵Cookie--转
    java使用jsp servlet来防止csrf 攻击的实现方法
    Creating a CSRF protection with Spring 3.x--reference
    Preventing CSRF in Java web apps---reference
    Linux服务器集群系统(四)--转
    Linux服务器集群系统(三)--转
    UVA 10529 Dumb Bones 可能性dp 需求预期
    android 渐变drawable
    定义你自己ViewGroup
    Android系统关机或几种方式重启
  • 原文地址:https://www.cnblogs.com/CL-King/p/14686745.html
Copyright © 2020-2023  润新知