简述Java中的集合

Java中一共有两大集合接口:Connection和Map

Connection接口:

  List:有序,可重复

    ArrayList

    优点:底层数据结构是数组,查询快,增删慢。

    缺点:线程不安全,效率高

    LinkedList

    优点:底层数据结构是链表,查询慢,增删快。

    缺点:线程不安全,效率高

    Vector

    优点:底层数据结构是数组,查询快,增删慢。

    缺点:线程安全,效率低

  Set:无序,不重复

    HashSet

    底层数据结构是哈希表(无序,唯一)

    依赖两个方法:hashCode()和equals()来保证元素唯一性

    LinkedHashSet

    底层数据结构是链表和哈希表(FIFO插入有序,唯一)

    由链表保证元素有序,由哈希表保证元素唯一

    TreeSet

    底层数据结构是红黑树(有序,唯一)

    自然排序、比较器排序来保证有序,根据比较的返回值是否是0来决定元素是否唯一

Map接口:

  常见的Map集合有HashMap、HashTable和TreeMap

  它们之间的区别:

  TreeMap是有序的,HashMap和HashTable是无序的

  HashTable的方法是同步的,HashMap的方法不是同步的

  HashTable是线程安全的,HashMap不是线程安全的

  HashMap效率较高,HashTable效率较低

  HashTable不允许null值,HashMap允许null值(key和value都允许)

  父类不同:HashTable的父类是Dictionary,HashMap的父类是AbstractMap

PS:

  TreeSet,LinkedHashSet和HashSet的区别

    TreeSet的主要功能用于排序

    LinkedHashSet的主要功能用于保证FIFO即有序的集合(先进先出)

    HashSet只是通用的存储数据的集合

posted @ 2020-05-12 15:57  AngeloAaron  阅读(145)  评论(0编辑  收藏  举报