JAVA集合汇总整理

JAVA集合汇总

继承结构:

/*
// Collection集合类
Collection<<interface>>
          |__ List<<interface>>
          |       |__ ArrayList<<class>>
          |       |__ LinkedList<<class>>
          |       |__ Vector<<class>>
          |__ Set<<interface>>
          |      |__ HashSet<<class>>
          |      |__ LinkedHashSet<<class>>
          |      |__ SortedSet<<interface>>
          |                  |__* TreeSet<<class>>
          |__ Queue<<interface>>
// Map集合类
Map<<interface>>
   |__ HashMap<<class>>
   |__ LinkedHashMap<<class>>
   |__ Hashtable<<class>>
   |__ SortedMap<<interface>>
               |__* TreeMap<<class>>
*/
  1. List

    ArrayList:基于数组,线程不安全;初始容量为10,加载因子为1,扩容量为:0.5 * 当前容量;

    LinkedList:基于链表,线程不安全;链表结构无容量限制;

    Vector:基于数组,线程安全;初始容量为10,加载因子为1,扩容量为:1 * 当前容量;

    • ArrayListLinkedList的区别

      ArrayList:底层基于数组实现,增删慢,查询快;

      LinkedList:底层基于链表实现,增删快,查询慢;

    • 自定义排序

      方法1:集合元素通过实现Comparable接口中的CompareTo方法进行排序;

      方法2:通过实现Comparator接口的compare方法,使用CollectionsListsort方法进行排序;

  2. Set

    Set集合的元素均不可重复;

    HashSet:基于哈希表,无序集合;

    LinkedHashSet:基于哈希表和链表,有序集合;

    TreeSet:基于红黑树(平衡二叉查找树),有序集合,元素不可为null;树结构无容量限制;

    • HashSetLinkedHashSet初始容量均为16,加载因子为0.75,扩容量为:1 * 当前容量;

    • LinkedHashSet默认按照插入顺序排序,不支持自定义排序;

    • TreeSet,如果元素是基本数据类型或其包装类型,则默认按升序排序;如果是元素是复杂对象类型,则需要元素实现Comparable接口中的CompareTo方法;

    • 以上三个Set都是线程不安全的

  3. Map

    Map集合的的Key均不可重复;

    HashMap:基于哈希表,线程不安全,无序集合,元素的Key、Value均可以为null;

    LinkedHashMap:基于链表和哈希表,线程不安全,有序结合,元素的Key、Value均可以为null;

    Hashtable:基于哈希表,线程安全,无序集合,元素的Key、Value均不可为null;

    TreeMap:基于红黑树(平衡二叉查找树),有序集合,元素的Key不可为null,Value可以为null;

    • HashMapLinkedHashMapHashtable初始容量为16,加载因子为0.75,扩容量为:1 * 当前容量;
    • LinkedHashMap默认按照插入顺序排序,不支持自定义排序;
    • TreeMap,如果元素是基本数据类型或其包装类型,则默认按升序排序;如果是元素是复杂对象类型,则需要元素实现Comparable接口中的CompareTo方法;

yumomode:博主水平有限,文中若有错误之处,恳请博友指正,感激不尽!!!

原文地址:https://www.cnblogs.com/yumomode/p/13902629.html