Android-HashMap

本文介绍了HashMap相关知识。它是一种哈希表数据结构,主干是数组,底层实现为Entry数组 + 链表,JDK8中链表长度为8时转为红黑树。默认数组长度16,加载因子0.75,元素超12会自动扩容。此外,指出HashMap线程不安全,适合单线程,ConcurrentHashMap线程安全,适用于多线程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、HashMap是什么?

哈希表,是一种数据结构(数据结构的存储模式只有两种,顺序存储结构和链式存储结构),HashMap的主干是数组。

2、HashMap的底层原理。

HashMap的实现原理就是Entry数组 + 链表 ;JDK8中对HashMap做了优化,当链表的长度为8时,转为红黑树,提高查询效率。

3、HashMap的扩容机制。(扩容每次都是2的N次 幂的大小)

HashMap的默认数组长度是16。
扩容执行函数resize();默认的加载因子是0.75,也就是当数元素超过16*0.75=12的时候,就会自动扩容。默认扩展一倍
因为在计算存储位置的时候,都会将Hashcode和数组长度-1执行与运算。来确定存放的数组Index,因为2的n次方-1的二进制是1111,不管谁与都是能够保证Hash冲突,将低碰撞,充分利用空间.

4、扩展

HashMap线程不安全,适合在单线程中使用;ConcurrentHashMap线程安全(效率很高,因为在执行锁的时候,执行的是锁段的操作,而不是锁住整个Hash 表),适用多线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值