HashMap
”PANDA
努力是最不值得被炫耀的东西
展开
-
HashMap源码解读(JDK1.7版)
一、数据结构HashMap采用链地址法解决哈希冲突,因此其结构就是由数组+链表组成,数组是HashMap的主体,链表则主要是为了解决哈希冲突而存在的,如果对应的数组位置不含链表,那么查找的时间复杂度仅为O(1),同时不管有无链表,插入操作的时间复杂度也一直为O(1),因为最新的Entry会插入链表头部。当实例化一个HashMap时,系统会创建一个长度为Capacity的Entry数组,这个长度...原创 2019-03-11 21:55:47 · 565 阅读 · 0 评论 -
面试常客HashMap
1.HashMap原理2.HashMap底层实现3.负载因子和扩容策略,介绍各个变量的作用4.负载因子为什么是0.75,为什么数组长度为2的指数倍以上四连发请见小白番外篇博客:HashMap源码解读5.HashMap是否线程安全?为何线程不安全?线程不安全的表现有哪些? 不安全!因为并发条件下存在问题! 具体表现:(1)如果有两个线程A和B,都要插入数据,刚好这...原创 2019-03-12 20:10:21 · 392 阅读 · 0 评论 -
jdk1.7与jdk1.8中HashMap区别(面试最详细版)
一、区别1. 最重要的一点是底层结构不一样,1.7是数组+链表,1.8则是数组+链表+红黑树结构;2. jdk1.7中当哈希表为空时,会先调用inflateTable()初始化一个数组;而1.8则是直接调用resize()扩容;3. 插入键值对的put方法的区别,1.8中会将节点插入到链表尾部,而1.7中是采用头插;4. jdk1.7中的hash函数对哈希值的计算直接使用key的h...原创 2019-03-12 23:27:28 · 24885 阅读 · 5 评论 -
ConcurrentHashMap源码解析(jdk1.7)
一、底层结构二、源码解析1.HashEntry数据结构static final class HashEntry<K,V> { final int hash; final K key; //保证数据可见性,即保证每次get到的数据都是最新的 volatile V value; volatil...原创 2019-04-06 15:10:54 · 246 阅读 · 0 评论 -
ConcurrentHashMap 1.7与1.8区别
理解Java7和8里面HashMap+ConcurrentHashMap的扩容策略ConcurrentHashMap1.7与1.8put与size的不同ConcurrentHashMap1,7与1.8的区别转载 2019-10-06 19:21:46 · 542 阅读 · 0 评论