集合框架库中各集合的特点和应用场景
- Map接口
(1) HashMap
特点:· key不能重复;
· 可以存储一个Key为null,多个value为null的元素
· 不能保证有序性;【升序】
应用场景:统计数据
(2) Hashtable
特点:· key不能重复;
· key和value都不能为null;
· 不能保证有序性;【降序】
应用场景:统计数据,较HashMap线程安全
(3) LinkedHashMap
特点:· key不能重复;
· key和value都不能为null;
· 保证有序性;
· 继承自HashMap,底层实现双链表
应用场景:排序统计数据
(4) TreeMap
特点:· key不能重复;
· key不能为null;
· 不能保证有序性;【默认key升序,可添加Comparator比较器自定义排序】
· 底层实现红黑树
应用场景:按照特定顺序统计数据 - Queue接口
PriorityQueue
特点:· 数据可以重复
· 不能存储null
· 基于堆实现
应用场景:最大值/最小值求解;Top K问题 - List接口
(1) ArrayList
特点:· 数据可重复;
· 保证有序性;
· 可以存储null;
· 底层为数组
应用场景:保存数据、适用于查询较多,修改较少的场景,随机访问数据set、get
(2) LinkedList
特点:· 数据可重复;
· 保证有序性;
· 可以存储null;
· 底层为双链表
应用场景:保存数据、适用于修改较多,查询较少的场景,随机新增或删除数据add、remove - Set接口
(1) HashSet
特点:· 数据不重复;
· 无法保证有序性;
· 可以存储null;
· 底层为HashMap,键值对中key存储数据、new Object PRESENT填充value
应用场景:数据去重
(2) LinkedHashSet
特点:· 数据不重复;
· 保证有序性;
· 可以存储null;
· 底层为LinkedHashMap,继承自HashSet,利用双向链表来实现的数据有序
应用场景:在去重的基础上实现插入数据有序
(3) TreeSet
特征:· 数据自然有序(可以实现自定义排序,实现Comparator接口)
· 数据不重复;
· 不能存储null;
· 底层基于TreeMap实现,利用红黑树来实现的数据有序
应用场景:数据需要去重,且数据按照特定大小(或自定义)进行排序