哈希表和哈希算法冲突

匿名 (未验证) 提交于 2019-12-02 23:52:01
哈希表(k,v)数组,根据相应的哈希算法计算key的下标,返回值就是v存储的数组下标哈希算法:f(K) -> int即为v需要存储的数组下标哈希算法:%16查找,添加元素:O(1)哈希冲突解决办法:哈希算法计算的两个不同对象的哈希值相等的情况eg:1%16==17%16a、开放定址法寻找下一个为null的数组下标,而后将冲突元素存储b、载散列法再次使用一个不同的哈希算法再次计算一次c、链地址法(拉链法):HashMap使用此方法来解决哈希冲突将所有冲突元素按照链表存储O(1+n)HashMap允许key,value为nullHashtable,key和value都不能为空   空指针异常TreeMap,由于必须实现排序,所以key不能为空,value可以 空指针异常跟据线程安全性:HashMap、TreeMap采用异步处理,线程不安全,性能较高Hashtable采用synchronized同步方法,线程安全,性能较低(锁的是整个哈希表,读读互斥)内部属性负载因子loadFactor,默认为0.75f实际容量 int threshold树化阈值 int TREEIFY――THRESHOLD = 8解除树化阈值 un = 6HashMap采用懒加载策略,第一次put时初始化哈希表 7.HashMap源码解析(负载因子,树化策略,内部hash实现,resize策略..) 8.ConcurrentHashMap是如何高效实现线程安全? 9.ConcurrentHashMap jdk1.7 与 jdk1.8的区别
 6.HashMap,TreeMap,HashTable的关系与区别a、这三个类都是Map接口下的常用字类,Hashtable基于哈希表实现,TreeMap基于红黑树实现,HashMap基于哈希表+红黑树
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!