Java Collection
容器底层数据结构
List
ArrayList
:Object[]
数组Vector
:Object[]
数组LinkedList
: JDK 1.7 之前,双向循环链表;JDK 1.7 之后,双向链表
Map
HashMap
:JDK 1.8 之前,数组 + 链表;JDK 1.8 之后,数组 + 链表/红黑树LinkedHashMap
:双向链表 + 数组 + 链表Hashtable
: 数组 + 链表TreeMap
:红黑树
Set
HashSet
: 基于 HashMap
实现
LinkedHashSet
: 基于 LinkedHashMap
实现
TreeSet
: 红黑树
思考:为什么
HashSet
底层HashMap
的 value 不存储 null,反而是一个 Object?
Queue
PriorityQueue
: Object[]
数组二叉堆
ArrayQueue
: Object[]
数组 + 双指针
集合选择场景
Map
一些签名计算要求传入的参数按照 ascii 排序可以使用
TreeMap
多线程场合
ConcurrentHashMap
其余场合
HashMap
Set
保证元素唯一 TreeSet
、HashSet
,做一些统计
List
没有特别要求就选择 ArrayList
、LinkedList
赏
使用支付宝打赏
使用微信打赏
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏
扫描二维码,分享此文章