Java中各集合特点的分析

List(有序,可重复):

  1. Vector 底层数据结构是数组,查询快,增删慢,线程安全,效率低。
  2. ArrayList 底层数据结构是数组,查询快,增删慢 , 线程不安全,效率高。
  3. LinkedList 底层数据结构是链表,查询慢,增删快,线程不安全,效率高。

Set(无序,唯一):

  1. HashSet 底层数据结构是哈希表; 哈希表依赖两个方法:hashCode()和equals() ,执行顺序:首先判断hashCode()值是否相同,如果是,继续执行equals(),看其返回值如果为true说明元素重复,则不添加 ,如果是false就添加到集合 。若hashCode()值不相同:就直接添加到集合
  2. LinkedHashSet 底层数据结构由链表和哈希表组成。链表保证元素有序,哈希表保证元素唯一。
  3. TreeSet 底层数据结构是红黑树。(是一种自平衡的二叉树) 根据比较的返回值是否是0来保证元素唯一性,其元素的排序通常为两种方式,第一种方式为自然排序(元素具备比较性) ,让元素所属的类实现Comparable接口 , 第二种方式为比较器排序(集合具备比较性) ,让集合接收一个Comparator的实现类对象。

Map(映射):

  1. Map集合的数据结构仅仅针对键有效,与值无关。存储的是键值对形式的元素,键唯一,值可重复。
  2. HashMap 底层数据结构是哈希表。线程不安全,效率高 ; 哈希表依赖两个方法:hashCode()和equals();hashCode()和equals()执行顺序为 : 首先判断hashCode()值是否相同,如果是true则继续执行equals(),若返回值是true, 则说明元素重复,不添加,反之则添加; 若首先判断hashCode()值是false, 则添加到集合中。
  3. LinkedHashMap 底层数据结构由链表和哈希表组成;链表保证元素有序, 哈希表保证元素唯一。
  4. Hashtable 底层数据结构是哈希表。线程安全,效率低; 哈希表依赖两个方法:hashCode()和equals();hashCode()和equals()执行顺序为 : 首先判断hashCode()值是否相同,如果是true则继续执行equals(),若返回值是true, 则说明元素重复,不添加,反之则添加; 若首先判断hashCode()值是false, 则添加到集合中。
  5. TreeMap 底层数据结构是红黑树(一种自平衡的二叉树) ,其根据比较的返回值是否是0来保证元素唯一性, 元素的排序通过两种方式:第一种是自然排序(元素具备比较性) 即让元素所属的类实现Comparable接口,第二种是比较器排序(集合具备比较性) ,即让集合接收一个Comparator的实现类对象。

你可能感兴趣的:(Java基础)