校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > java语言 > HashMap、Hashtable、concurrentthashmap
题目

hashmap线程安全吗?内存扩展的方式是什么?

解答

扩容时不安全,头插法容易死循环

HashMap的初始桶的数量为16,loadFact为0.75,当桶里面的数据记录超过阈值的时候,HashMap将会进行扩容则操作,每次都会变为原来大小的2倍

C 20条回复 评论
半个朋友

可以做个参考

发表于 2022-10-30 22:00:00
0 0
采苓子

UI设计发展前景怎么样

发表于 2021-09-13 09:20:00
0 0
匀斋

太给力了 醍醐灌顶

发表于 2021-09-11 19:55:00
0 0
拿offer咯

hashmap扩容时不安全,默认大小为16,加载因子为0. 75,当超过阈值,扩容2倍,在jdk1. 8之后,当容量大于64,单个链表大于8,会变成红黑树

发表于 2020-08-17 13:02:46
0 0
陪你度过漫长岁月

hashmap不是线程安全的,扩容时复制为原先数组容量的两倍。1.7采用头插法容易导致链路循环或者元素丢失,1.8采用尾插法容易造成元素覆盖。

发表于 2020-08-17 12:33:43
0 0
ZhangAoo

hashmap是线程不安全的,hashmap底层是数组结构,也被称为"哈希桶",桶里面的每个元素都是链表结构,jdk8之后当链表长度>=8,转换为红黑树结构,以此提升查询、插入效率

发表于 2020-08-17 11:34:57
0 0
2223187686

不安全,可使用代码块,同步方法,静态方法保证线程的安全

发表于 2020-08-17 10:53:38
0 0
伫望向北

hash非线程安全,当hashmap中的元素个数超过数组大小loadFactor时,就会进行数组扩容

发表于 2020-08-17 10:39:44
0 0
我是大怪兽诶

当数组扩展到64时,并且链表长度大于8时,链表会转红黑树,原因,红黑树查找效率o(logn)
当链表长度小于6时,红黑树转为链表。原因:树的转换和维护有浪费,当结点少时,查询优化不明显。

发表于 2020-08-17 10:36:58
0 0
我是大怪兽诶

不安全。jdk7以前是由于在扩容的时候因为头插法会出现死循环。jdk8改为尾插法,但是在put时,可能出现数据覆盖的情况。
内存扩展:初始化为16的数组 当数组元素个数达到 容量*阈值(0.75) 12时,出现扩容,是以2倍进行扩容的。

发表于 2020-08-17 12:09:31
0 1