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) |

相关推荐
Ray Liang几秒前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Java水解16 分钟前
Java 中间件:Dubbo 服务降级(Mock 机制)
java·后端
SimonKing4 小时前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean4 小时前
Jackson View Extension Spring Boot Starter
java·后端
Seven976 小时前
剑指offer-79、最⻓不含重复字符的⼦字符串
java
皮皮林55115 小时前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java
冰_河15 小时前
QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!
java·后端·性能优化
桦说编程18 小时前
从 ForkJoinPool 的 Compensate 看并发框架的线程补偿思想
java·后端·源码阅读
躺平大鹅20 小时前
Java面向对象入门(类与对象,新手秒懂)
java