Collection 表示一组对象,这些对象也称为 collection 的元素。
List:有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)
访问元素,并搜索列表中的元素。与 set 不同,列表通常允许重复的元素。
ArrayList:此类是不同步的;允许包括 null 在内;大小可变数组的实现;初始容量为 10;1.5倍gorw扩容。
LinkedList:此实现不是同步的;允许所有元素(包括 null);所有操作都是按照双重链接列表的需要执行的。
Vector:Vector是同步的;内部数据数组的大小为 10,其标准容量增量为零;每次需要增大容量时,向量的容量将增大一倍,2倍扩容。
Stack:表示后进先出(LIFO)的对象堆栈。它通过五个操作对类 Vector 进行了扩展 ,允许将向量视为堆栈。初试容量大小10;2倍扩容。
CopyOnWriteArrayList:ArrayList 的一个线程安全的变体,其中所有可变操作(add、set 等等)都是通过对底层数组进行一次新的复制来实现的。
Set<E>:一个不包含重复元素的 collection;并且最多包含一个 null 元素。
HashSet<E>:此实现不是同步的。由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允
许使用 null 元素。 其底层 HashMap 实例的默认初始容量是 16,加载因子是 0.75。
TreeSet<E>:此实现不是同步的;基于 TreeMap 的 NavigableSet 实现。使用元素的自然顺序对元素进行排序。
CopyOnWriteArraySet<E>:它是线程安全的。
LinkedHashSet<E>:此实现不是同步的。
ConcurrentSkipListSet<E>:此类不允许使用 null 元素。
Queue接口:在处理元素前用于保存元素的 collection,队列通常(但并非一定)以 FIFO(先进先出)的方式排序各个元素。不过优先级队列和 LIFO 队列
(或堆栈)例外,前者根据提供的比较器或元素的自然顺序对元素进行排序,后者按 LIFO(后进先出)的方式对元素进行排序。Queue 实现通常不
允许插入 null元素,因为 null 也用作 poll 方法的一个特殊返回值,表明队列不包含元素。
Deque接口:一个线性 collection,支持在两端插入和移除元素。名称 deque 是“double ended queue(双端队列)”的缩写;提供插入、移除和检查
元素的方法。每种方法都存在两种形式:一种形式在操作失败时抛出异常,另一种形式返回一个特殊值(null 或 false,具体取决于操作)。将
双端队列用作队列时,将得到 FIFO(先进先出)行为。将元素添加到双端队列的末尾,从双端队列的开头移除元素。也可用作 LIFO(后进先出)
堆栈。应优先使用此接口而不是遗留 Stack 类。在将双端队列用作堆栈时,元素被推入双端队列的开头并从双端队列开头弹出。与 List 接口
不同,此接口不支持通过索引访问元素。 有严格要求禁止插入 null 元素。
PriorityQueue<E>:此实现不是同步的。一个基于优先级堆的无界优先级队列。优先级队列的元素按照其自然顺序进行排序,优先级队列不允许使用 null 元
素。依靠自然顺序的优先级队列还不允许插入不可比较的对象,此队列的头 是按指定排序方式确定的最小元素。优先级队列是无界的,但
是有一个内部容量,控制着用于存储队列元素的数组大小。默认的初始容量(11)。
ArrayDeque<E>:不是线程安全的,数组双端队列没有容量限制,禁止 null 元素,初始容量能够容纳 16 个元素。
HashMap<K,V>:接口 Map<K,V>一个映射不能包含重复的键;每个键最多只能映射到一个值。 允许使用 null 值和 null 键。(除了非同步和允许使用 null
之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。HashMap 的实例有两个参数影响其
性能:初始容量 和加载因子。具有默认初始容量 (16) 和默认加载因子 (0.75) 。此实现不是同步的。
TreeMap<K,V>:此实现不是同步的。基于红黑树(Red-Black tree)的 NavigableMap 实现。该映射根据其键的自然顺序进行排序。
Hashtable<K,V>:Hashtable 是同步的,任何非 null 对象都可以用作键或值;Hashtable 的实例有两个参数影响其性能:初始容量和加载因子。
默认的初始容量 (11) 和加载因子 (0.75)。
Properties:此类是线程安全的:多个线程可以共享单个 Properties 对象而无需进行外部同步。属性列表中每个键及其对应值都是一个字符串。
容量一旦改变,就不会变小回去。不要将初始容量设置得太高(或将加载因子设置得太低)。
Collection中的List和Set与Map的用法总结
最新推荐文章于 2021-08-10 23:43:46 发布