集合+map
文章平均质量分 78
liu1002880404
这个作者很懒,什么都没留下…
展开
-
【集合类】java中快速失败(fail-fast)和安全失败(fail-safe)
一:快速失败(fail—fast)在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修改),则会抛出ConcurrentModificationException。fail-fast机制并不保证在不同步的修改下一定会抛出异常,它只是尽最大努力去抛出,所以这种机制一般仅用于检测bug。原理:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个modCount变量。集合在被遍历期间如果内容发生变化,就会改变modCount的值。每当迭代器使用hash..原创 2021-03-31 17:39:51 · 166 阅读 · 0 评论 -
HashMap 源码通俗理解
底层实现原理:HashMap是Map的一个实现类,它是以键值对存储数据的,Key-Value都是Map.Entry中的属性。当我们向HashMap中存放一个元素(k1,v1),先根据k1的hashCode方法来决定在数组中存放的位置。如果这个位置没有其它元素,将(k1,v1)直接放入一个Node类型的数组中,当元素加到12的时候,底层会进行扩容,扩容为原来的2倍。如果该位置已经有其它元素(k2,v2),那就调用k1的equals方法和k2进行比较二个元素是否相同,如果结果为true,说明二个元素是一样的原创 2021-03-31 17:29:32 · 212 阅读 · 0 评论 -
ConcurrentHashMap 源码详解 理解ConcurrentHashMap的底层运行逻辑
ConcurrentHashMap有别于HashMap的线程不安全和HashTable的低效率(稍微看了一下源码,发现使用了大量的synchronized关键字修饰的同步方法),ConcurrentHashMap使用的是cas来保证整个元素插入、删除、扩容时候的同步安全。充分解决了HashMap和HashTable存在的问题。下面需要对ConcurrentHashMap的源码做一些解读,让读者更好的理解ConcurrentHashMap的底层运行逻辑。一、ConcurrentHashMap初始化的原创 2021-03-09 10:16:59 · 478 阅读 · 0 评论 -
java7之HashMap详解
源码剖析1. HashMap(jdk1.7版本) - 此篇详解大家都知道,jdk1.7版本底层数组+链表(单向链表),结合笔者的经验之谈,我觉得在分析HashMap集合具体操作源码前,有必要先了解下其底层链表结构,上源码…链表结构 - 单向链表 /** * HashMap1.7中定义- 单向链表 */ static class Entry<K,V> implements Map.Entry<K,V> { ...转载 2021-01-02 11:38:37 · 257 阅读 · 0 评论 -
HashMap 和 ConcurrentHashMap java7 java8对比
引言HashMap 和 ConcurrentHashMap面试常问,务必理解和掌握HashMap众所周知,HashMap的底层结构是数组和链表组成的,不过在jdk1.7和jdk1.8中具体实现略有不同。<!-- more -->jdk1.7先看图再看看1.7的实现介绍成员变量: 初始化桶大小,因为底层是数组,所以这是数组默认的大小。 桶最大值。 默认的负载因子(0.75) table真正存放数据的数组。 map存放数量原创 2020-09-01 09:27:31 · 184 阅读 · 0 评论 -
Map分析(三) HashMap底层实现原理
什么时加载因子?为什么加载因子时0.75?加载因子也叫扩容因子或负载因子,用来判断什么时候进行扩容的,假如加载因子是0.5,HashMap的初始化容量是16,那么当HashMap中有16*0.5=8个元素时,HashMap就会进行扩容。那加载因子为什么是0.75而不是0.5或者1.0呢?这其实是出于容量和性能之间平衡的结果: 当加载因子设置比较大的时候,扩容的门槛就被提高了,扩容发生的频率比较低,占用的空间会比较小,但此时发生Hash冲突的几率就会提升,因此需要更复杂的数据结构来存储元素,原创 2020-08-31 14:04:40 · 137 阅读 · 0 评论 -
深入理解Map(二) HashMap 主要特点和关键方法源码解读
什么是 HashMapHashMap 是一个采用哈希表实现的键值对集合,继承自AbstractMap,实现了Map 接口。HashMap 的特殊存储结构使得在获取指定元素前需要经过哈希运算,得到目标元素在哈希表中的位置,然后再进行少量比较即可得到元素,这使得 HashMap 的查找效率很高。当发生 哈希冲突(碰撞)的时候,HashMap 采用拉链法进行解决,哈希冲突的解决选用哈希函数计算哈希值时,可能不同的 key 会得到相同的结果,一个地址怎么存放多个数据呢?这就是冲突。...原创 2020-08-31 13:57:37 · 536 阅读 · 0 评论 -
深入理解Map
什么是 MapJava 中的 Map 接口 是和Collection 接口同一等级的集合根接口,它 表示一个键值对 (key-value) 的映射。一个 Map 中,任意一个 key 都有唯一确定的 value 与其对应,这个 key-value 的映射就是 map。Map 中元素的顺序取决于迭代器迭代时的顺序,有的实现类保证了元素输入输出时的顺序,比如说 TreeMap;有的实现类则是无序的,比如 HashMap。Map 的三个 collection 视图:Map 接口提供了三..原创 2020-08-31 11:46:10 · 366 阅读 · 0 评论