集合框架1

|-----------|----|------|--------------|--------|
| ArrayList | 10 | N/A | 元素数>当前容量 | 1.5倍增长 |
| HashMap | 16 | 0.75 | 元素数>容量×负载因子 | 2倍增长 |

hashset底层使用hashmap实现

hashmap

数组链表红黑树 + hash算法

用链表是来解决数组下标会覆盖的问题,冲突的问题。为什么hashmap用两个数据结构

头插法、尾插法

头插法(多线程出现死循环 cpu 100%)

:扩容时从头节点开始插

put和get都使用hash算法

红黑树的查询效率

当链表长度>=8且容量大小大于64的时候转红黑树

=<6红黑树转链表

ConcurrentHashMap(并发安全map)

cas乐观锁

锁粒度非常小只在链表头节点 、红黑树上加锁synchronized(log2n)

二分法查找的时间复杂度为 ‌**O(log⁡n)**‌

synchronized会发生上下文切换

链表

1、覆盖

2、直接插入next尾部(没有用头插法)

相关推荐
丰锋ff11 小时前
基于 Qt 的智慧社区物业管理系统
开发语言·qt
夜不会漫长12 小时前
C++入门(1)
开发语言·c++·算法
大鹏说大话12 小时前
从爬虫到决策引擎:大数据下自媒体如何用Python挖掘用户痛点
开发语言·爬虫·python
Niuguangshuo12 小时前
silero-vad:超轻量级开源 VAD 实践指南
开发语言·python
金銀銅鐵12 小时前
[Java] 一个方法最多可以有多少个入参?
java·jvm
哭哭啼12 小时前
JAVA服务问题诊断
java·开发语言·jvm
Sayuanni%313 小时前
SpringBoot 从注解到源码:核心知识点总结
java·spring boot·后端
坚定信念,勇往无前13 小时前
Maven 私有仓库-nexus
java
Minner-Scrapy13 小时前
Scrapy 2.17 源码解析:Scheduler 调度器与磁盘/内存双队列
java·爬虫·python·scrapy·网络爬虫·twisted
晚风醉蝶13 小时前
1-11-奇偶排序-OddEvenSort
java·数据结构·算法