1.简介
首先,我们今天主要的讲解还是hash算法,但是需要注意的就是,即使利用hash算法,计算出来的hashcode值,可能也会出现相同的情况。
hashmap作为java中非常重要的数据结构,对于key-value类型的存储(缓存,临时映射表,。。。)等不可或缺,hashmap本身是非线程安全的,对于多线程条件下需要做竞争条件处理,可以通过Collections和ConcurrentHashmap来替代。
2.数据结构
hashmap存储数据主要是通过数组+链表实现的,通过将key的hashcode映射到数组的不同元素(桶,hash中的叫法),然后冲突的元素放入链表中。

其实想象一下它的代码,无非也就是进行了一下k和value的一些判断在里面


hash算法

可以看到,算法进行了二次hash,使高位也参与到计算中,防止低位不变造成的hash冲突
注:这一切的目的实际上都是为了使value尽量分布到不同的

本文探讨了HashMap的核心概念,包括其数据结构——数组加链表,hash算法及其优化,初始化与扩容策略,以及非线程安全特性。强调了二次hash避免冲突,初始容量与负载因子对性能的影响,以及resize操作的触发条件。最后提到了HashMap的快速失败策略。
和hash算法?&spm=1001.2101.3001.5002&articleId=123763699&d=1&t=3&u=033f9dccca6144d498abd0d920d428d3)
1552

被折叠的 条评论
为什么被折叠?



