集合的体系和常用实现类特点
2.4 List 和 Map、Set 的实现类(必会)
(1)Connection接口:
List 有序,可重复
ArrayList
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程不安全,效率高
Vector
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程安全,效率低, 已给舍弃了
LinkedList
优点: 底层数据结构是链表,查询慢,增删快。
缺点: 线程不安全,效率高
Set 无序,唯一
HashSet
底层数据结构是哈希表。(无序,唯一)
如何来保证元素唯一性?
依赖两个方法:hashCode()和equals()
LinkedHashSet
底层数据结构是链表和哈希表。(FIFO插入有序,唯一)
1.由链表保证元素有序
2.由哈希表保证元素唯一
TreeSet
底层数据结构是红黑树。(唯一,有序)
1. 如何保证元素排序的呢?
自然排序
比较器排序
2.如何保证元素唯一性的呢?
根据比较的返回值是否是0来决定
(2)Map接口有四个实现类:
HashMap
基于 hash 表的 Map 接口实现,非线程安全,高效,支持 null 值和 null 键, 线程不安全。
HashTable
线程安全,低效,不支持 null 值和 null 键;
LinkedHashMap
线程不安全,是 HashMap 的一个子类,保存了记录的插入顺序;
TreeMap
能够把它保存的记录根据键排序,默认是键值的升序排序,线程不安全。
体系结构
Collection<E>接口
/ \
Set<E>接口 List<E>接口
/ \ / \ \
HashSet<E>实现类 TreeSet<E>实现类 ArrayList<E>实现类 LinkedList<>实现类 Vector(线程安全)
|
LinkedHashSet<>实现类
集合的特点:
Set系列集合:添加的元素是无序,不重复,无索引的。
HashSet :添加的元素是无序,不重复,无索引的。
LinkedHashSet:添加的元素是有序,不重复,无索引的。
TreeSet:不重复,无索引,按照大小默认升序排序
List系列集合:添加的元素是有序,可重复,有索引。
ArrayList: 添加的元素是有序,可重复,有索引。
LinkedList:添加的元素是有序,可重复,有索引。
原文链接:https://blog.csdn.net/qq_43472877/article/details/107024099