Java List Set Map

一、List

1.1 ArrayList

1.2 LinkedList

二、Set

2.1 HashSet

2.2 TreeSet

2.3 LinkedHashSet

三、Map

3.1 HashMap

3.2 TreeMap

3.3 LinkedHashMap

四、对比

|------|---------------|------------------|----|-------|-----------------|------------------------------------------------------|---------|---------|-------------------|
| | 类型 | 底层结构 | 重复 | null值 | 场景 | 备注 | 查询 | 删除 | 新增 |
| List | ArrayList | 动态数组 | 可 | 允许 | 快速随机访问元素 | | 0(1) | 0(n) | 尾部增加0(1),中部增加0(n) |
| List | LinkList | 双向链表 | 可 | 允许 | 需要快速插入,删除元素 | | 0(n) | 0(1) | 尾部增加0(1),中部增加0(n) |
| Set | HashSet | 数组+(链表、红黑树) | 不可 | 允许 | 不要求顺序,且没有重复元素 | 重写hsahCode、equlas | 0(1) | 0(1) | 0(1) |
| Set | TreeSet | 红黑树 | 不可 | 不允许 | 要求顺序,且没有重复元素 | 重写comparato | 0(logN) | 0(logN) | 0(logN) |
| Set | LinkedHashSet | 数组+(链表、红黑树))+链表 | 不可 | 允许 | 有特定输出顺序,且没有重复元素 | | 0(1) | 0(1) | 0(1) |
| Map | HashMap | 数组+(链表、红黑树) | 不可 | 允许 | 键值存取,而且不要求顺序 | 时间复杂度平均能达到O(1)。正常是O(1)到O(n) jdk1.8添加了 红黑树 是 O(log n) | 0(1) | 0(1) | 0(1) |
| Map | TreeMap | 红黑树 | 不可 | 不允许 | 键值存取值,而且要求顺序 | 重写comparato | 0(logN) | 0(logN) | 0(logN) |
| Map | LinkedHashMap | (数组+(链表、红黑树))+链表 | 不可 | 允许 | 有特定输出顺序键,键值存取 | | 0(1) | 0(1) | 0(1) |

相关推荐
Le1Yu14 分钟前
消息队列以及RabbitMQ的使用
java·开发语言
羚羊角uou25 分钟前
【Linux】线程池
java·开发语言
阿拉-M8332 分钟前
IntelliJ IDEA Windows 系统高频快捷键使用手册
java·windows·intellij-idea
lingggggaaaa1 小时前
小迪安全v2023学习笔记(一百三十四讲)—— Windows权限提升篇&数据库篇&MySQL&MSSQL&Oracle&自动化项目
java·数据库·windows·笔记·学习·安全·网络安全
迦蓝叶1 小时前
JAiRouter v1.0.0 正式发布:企业级 AI 服务网关的开源解决方案
java·运维·人工智能·网关·spring·ai·开源
安卓开发者1 小时前
鸿蒙NEXT应用接入快捷栏:一键直达,提升用户体验
java·harmonyos·ux
yudiandian20142 小时前
03 Eclipse 配置 JDK 环境
java·ide·eclipse
_码力全开_2 小时前
P1005 [NOIP 2007 提高组] 矩阵取数游戏
java·c语言·c++·python·算法·矩阵·go
陈一Tender2 小时前
JavaWeb后端实战(登录认证 & 令牌技术 & 拦截器 & 过滤器)
java·开发语言·spring boot·mysql