集合的体系和常用实现类特点

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

posted on 2022-03-19 11:27  -G  阅读(107)  评论(0编辑  收藏  举报

导航