集合
Java 的集合类是一些常用的数据结构,比如线性表、队列、栈等。Java 集合就像一种“容器”,用于存储数量不等的对象,并按照规范实现一些常用的方法和算法。

集合框架

Collection 接口的接口 对象的集合(单列集合)
├── List 接口:
│    ├── LinkedList 
│    ├── ArrayList 
│    └── Vector 接口实现类 数组, 同步, 线程安全(尽量避免使用)
│         └── Stack 是Vector类的实现类
├── Queue 接口
│   ├── Deque
│   │   ├── ArrayDeque
│   │   └── LinkList
│   └── PriorityQueue 
└── Set 接口: 
    ├── HashSet 
    │   └──  LinkedHashSet
    └── SortedSet 
         └── TreeSet 


Map 接口 键值对的集合 (双列集合)
├── Hashtable 
├── HashMap 
│    └── LinkedHashMap 
└── TreeMap

集合类

Collection

  • Set : HashSet, LinkedHashSet, TreeSet
  • Queue :ArrayDeque, LinkedList, PriorityQueue
  • List: LinkedList, Vector, ArrayList, Stack

子类及其实现类

  • List : List 是有序,元素可重复的Collection,实现List接口的常用类有LinkedList,ArrayList
    • LinkedList:LinkedList 实现了 List 和 Dequeue 接口,允许 null 元素。此外 LinkedList 提供额外的get,remove,insert 方法在 LinkedList 的首部或尾部。
    • ArrayList:ArrayList 实现了可变大小的数组。它允许所有元素,包括 null。ArrayList 没有同步。size,isEmpty,get,set 方法运行时间为常数。但是 add 方法开销为常数,添加 n 个元素需要 O(n) 的时间。其他的方法运行时间为线性。
  • Queue:Queue 接口定义了队列数据结构,元素是有序的(按插入顺序),先进先出。
    • PriorityQueue:基于堆结构实现,可以用它来实现优先队列。
    • Deque:双端队列。
      • ArrayDeque:ArrayDeque 用数组实现。
      • LinkedList 实现了 Dequeue 和 List 接口,用链表实现。
  • Set:Set 接口无序(意味着不能通过下标读取)并且不允许重复元素。
    • HashSet:使用 HashMap 存储 hashes 和 elements 以避免存在重复元素。
      • LinkedHashSet:LinkedHashSet 继承HashSet,使用双向链表按插入的顺序将元素链起来。
    • SortedSet:SortedSet是有序的,排序取决于 compareTo 方法或 SortedSet 构造函数
      • TreeSet:使用红黑树(由 TreeMap 实现)确保没有重复元素。

Map

  • Hashtable
  • HashMap: LinkedHashMap, WeakHashMap
  • TreeMap

子类及其实现类

  • Hashtable:同步, 线程安全。
  • HashMap: 没有同步, 线程不安全。
    • LinkedHashMap:此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。存储的数据是有序的。
  • TreeMap:红黑树实现。元素按照 key 值排序。