
Java 集合
集合
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 实现)确保没有重复元素。
- HashSet:使用 HashMap 存储 hashes 和 elements 以避免存在重复元素。
Map
- Hashtable
- HashMap: LinkedHashMap, WeakHashMap
- TreeMap
子类及其实现类
- Hashtable:同步, 线程安全。
- HashMap: 没有同步, 线程不安全。
- LinkedHashMap:此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。存储的数据是有序的。
- TreeMap:红黑树实现。元素按照 key 值排序。