zoukankan      html  css  js  c++  java
  • 哈希表和哈希算法冲突


    哈希表(k,v)数组,根据相应的哈希算法计算key的下标,返回值就是v存储的数组下标
    哈希算法:f(K) -> int即为v需要存储的数组下标
    哈希算法:%16
    查找,添加元素:O(1)

    哈希冲突解决办法:
    哈希算法计算的两个不同对象的哈希值相等的情况
    eg:1%16==17%16
    a、开放定址法
    寻找下一个为null的数组下标,而后将冲突元素存储

    b、载散列法
    再次使用一个不同的哈希算法再次计算一次

    c、链地址法(拉链法):HashMap使用此方法来解决哈希冲突
    将所有冲突元素按照链表存储
    O(1+n)
    HashMap允许key,value为null
    Hashtable,key和value都不能为空 空指针异常
    TreeMap,由于必须实现排序,所以key不能为空,value可以 空指针异常


    跟据线程安全性:
    HashMap、TreeMap采用异步处理,线程不安全,性能较高
    Hashtable采用synchronized同步方法,线程安全,性能较低(锁的是整个哈希表,读读互斥)

    内部属性
    负载因子loadFactor,默认为0.75f
    实际容量 int threshold
    树化阈值 int TREEIFY——THRESHOLD = 8
    解除树化阈值 un = 6
    HashMap采用懒加载策略,第一次put时初始化哈希表


    7.HashMap源码解析(负载因子,树化策略,内部hash实现,resize策略..)
    8.ConcurrentHashMap是如何高效实现线程安全?
    9.ConcurrentHashMap jdk1.7 与 jdk1.8的区别

     6.HashMap,TreeMap,HashTable的关系与区别
    a、这三个类都是Map接口下的常用字类,Hashtable基于哈希表实现,TreeMap基于红黑树实现,HashMap基于哈希表+红黑树
  • 相关阅读:
    HTTP状态码
    firefox浏览器新建页面一直处于刷新状态解决方法
    firefox浏览器需要新建窗口时以新建标签页代替
    bash基础教程
    sqoop的导入|Hive|Hbase
    sqoop导出数据|Hive|HDFS和脚本编写
    sqoop安装
    sqoop简介和原理分析
    Oozie安装
    Oozie框架介绍
  • 原文地址:https://www.cnblogs.com/hetaoyuan/p/11241820.html
Copyright © 2011-2022 走看看