HashSet

本文深入解析了Java中的HashSet集合,强调其无序性、不允许重复元素的特性,以及底层依赖HashMap的实现。详细介绍了初始容量、扩容机制,特别指出当链表节点数达到8且数组长度不足64时,会触发扩容或树化操作。这有助于理解Java集合框架的高效存储和查找原理。
摘要由CSDN通过智能技术生成

(1)HashSet实现了Set接口

(3)无序(添加和取出顺序不一致)

(4)不能存储重复元素,最多只有一个null

(2)HashSet的底层是HashMap,第一次添加时,扩容到16,扩容的阈值是当前容量*0.75,16*0.75=12(12是指当前数组中存储12个node节点时,下一次add时则进行扩容,比如一个索引3位置上有个7个,另外一个索引位置有5个,下一次add则会进行扩容,而不是指当前数组中有12个索引位置都有数值时下次add进行扩容)(这个12最先也理解错了,害),容量不够时以当前容量的2倍扩容。

(5)在java8中,其中一条链表的元素个数达到8个时,如果数组的length没有达到64个,数组会进行扩容,直到其中一条链表元素个数达到8个并且数组的length达到64时,会进行树化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值