集合的特点和数据结构总结

集合(自己补齐)

  • Collection(单列集合)

    • List(有序,可重复)
      • ArrayList
        1. 底层数据结构是数组,查询快,增删慢
        2. 线程不安全,效率高
      • Vector
        1. 底层数据结构是数组,查询快,增删慢
        2. 线程安全,效率低
      • LinkedList
        1. 底层数据结构是链表,查询慢,增删快
        2. 线程不安全,效率高
    • Set(无序,唯一)
      • HashSet
        1. 底层数据结构是哈希表。
        2. 哈希表依赖两个方法:hashCode()和equals()
        3. 执行顺序:
        首先判断hashCode()值是否相同
          是:继续执行equals(),看其返回值
             是true:说明元素重复,不添加
             是false:就直接添加到集合
          否:就直接添加到集合
        4. 最终:
        自动生成hashCode()和equals()即可
      • LinkedHashSet
        1. 底层数据结构由链表和哈希表组成。
        2. 由链表保证元素有序。
        3. 由哈希表保证元素唯一。
      • TreeSet
        1. 底层数据结构是红黑树。(是一种自平衡的二叉树)
        2. 如何保证元素唯一性呢?
          答:根据比较的返回值是否是0来决定
        3. 如何保证元素的排序呢?
          答:两种方式
          (1) 自然排序(元素具备比较性):让元素所属的类实现Comparable接口
          (2)比较器排序(集合具备比较性):让集合接收一个Comparator的实现类对象
  • Map(双列集合)
    A:Map集合的数据结构仅仅针对键有效,与值无关。
    B:存储的是键值对形式的元素,键唯一,值可重复。

    • HashMap
      1. 底层数据结构是哈希表。线程不安全,效率高
      2. 哈希表依赖两个方法:hashCode()和equals()
      3. 执行顺序:
      首先判断hashCode()值是否相同
        是:继续执行equals(),看其返回值
          是true:说明元素重复,不添加
          是false:就直接添加到集合
        否:就直接添加到集合
      4. 最终:
      自动生成hashCode()和equals()即可
    • LinkedHashMap
      底层数据结构由链表和哈希表组成。
      由链表保证元素有序。
      由哈希表保证元素唯一。
    • Hashtable
      1. 底层数据结构是哈希表。线程安全,效率低
      2. 哈希表依赖两个方法:hashCode()和equals()
      3. 执行顺序:
      首先判断hashCode()值是否相同
        是:继续执行equals(),看其返回值
          是true:说明元素重复,不添加
          是false:就直接添加到集合
        否:就直接添加到集合
      4. 最终:
      自动生成hashCode()和equals()即可
    • TreeMap
      1. 底层数据结构是红黑树。(是一种自平衡的二叉树)
      2. 如何保证元素唯一性呢?
        答:根据比较的返回值是否是0来决定
      3. 如何保证元素的排序呢?
        答:两种方式
          自然排序(元素具备比较性):让元素所属的类实现Comparable接口
          比较器排序(集合具备比较性):让集合接收一个Comparator的实现类对象
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页