java8

优点
速度等加快
底层数据结构

底层数据结构的改变
HashMap的比较必须保证没有重复元素,每次加入的时候必须要与前一个进行比较(原有模式是数组加上链表)比较索引值 如果索引值相同 比较具体数值(使用equals方法) 为避免碰撞 当使用75%的时候进行扩容 扩容后需要进行重新排序 运算之前的位置,jdk1.8之后进行改变 数组-链表-红黑树,当碰撞个数大于8且总容量大于64,
数组中储存的是entry类型
数组具有索引值
默认的长度是16
对对象进行HashCode算法生成数组的索引值,并找到对应的位置,如果该索引值没有元素,直接进行储存。

当索引值存在数值的时候
进行值比较
数值相同 ,进行覆盖
数值不相同,生成链表失去优势,极端的情况需要查询所有(避免碰撞)

当对象的值一样,hashequals生成的一样

当元素占有75%的时候进行扩容,扩容之后每个元素进行新的运算以及扩容,碰撞的概率就会变低

碰撞避免不了,效率就会变低

现在java8
数组+链表+红黑表

当某一个链表的个数大于8同时总容量大于64%的时候,会进行转变(转变为红黑树,除了添加之外,其他的效率都会比链表更快,添加的时候链表直接在后面),并且扩容之后不用重新运算hashcode的数值,只用找原来hash表的总长度加上当前长度的位置(2倍)

hashset、concurrentHashMap、、随之改变

特征
拉姆达表达式
stream API

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值