
集合
文章平均质量分 64
Java编程小辉
两年半Java开发经验,24届毕业生
GitHub:https://github.com/qiuquanhui 正在求职找工作中
展开
-
HashMap源码解析
因此 n - 1 就是二进制低位全是1,跟 hashCode 相与的话会将左边的哈希值的高位全抹掉,剩下的就是余数了,因此相当于 HashCode % n, 两者的结果是一样的,但使用 HashCode & (n - 1)是位运算,执行在硬件层,效率比直接求余要高。扩容机制:HashMap 的默认容量为 16 ,负载因子为 0.75,当集合中的元素超过容量与负载因子的乘积时,会引发扩容机制。树化的过程,两个条件:1.hashmap 的容量要大于等于 64 并且 链表的长度要大于等于 8 ,才能实现树化。原创 2024-06-11 16:46:39 · 628 阅读 · 0 评论 -
ArrayList源码解析
ArrayList:是基于数组实现的集合列表,它被称为动态数组,因为相比与数组的固定大小,ArrayList 当添加元素时,添加的元素数量大于数组的容量的话就会触发扩容机制。ArrayList 是线程不安全的,如果要实现线程安全,可以使用 CopyOnWriteArrayList,或者用 Collections 工具类封装。每次通过右移的方法扩容 1.5 倍,最后将旧数组的元素复制到新数组中。数组的移除是通过覆盖的方式完成,将该元素后面的值往前覆盖。很简单,直接根据下标设置数组的元素。原创 2024-06-11 14:59:09 · 420 阅读 · 0 评论 -
HashMap扩容机制
触发条件:HashMap 的默认容量为 16 ,负载因子为 0.75,当集合中的元素超过容量与负载因子的乘积时,会引发扩容机制。我是小辉,24 届毕业生。当下是找工作ing,欢迎关注,持续分享。 如果红黑树的值小于 6 ,就会退化成链表。原创 2024-05-30 16:10:35 · 1127 阅读 · 0 评论