Collection中的List和Set与Map的用法总结



Collection 表示一组对象,这些对象也称为 collection 的元素。

List:有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)
     访问元素,并搜索列表中的元素。与 set 不同,列表通常允许重复的元素。
     
ArrayList:此类是不同步的;允许包括 null 在内;大小可变数组的实现;初始容量为 101.5倍gorw扩容。

LinkedList:此实现不是同步的;允许所有元素(包括 null);所有操作都是按照双重链接列表的需要执行的。

Vector:Vector是同步的;内部数据数组的大小为 10,其标准容量增量为零;每次需要增大容量时,向量的容量将增大一倍,2倍扩容。

Stack:表示后进先出(LIFO)的对象堆栈。它通过五个操作对类 Vector 进行了扩展 ,允许将向量视为堆栈。初试容量大小102倍扩容。

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 对象而无需进行外部同步。属性列表中每个键及其对应值都是一个字符串。


容量一旦改变,就不会变小回去。不要将初始容量设置得太高(或将加载因子设置得太低)。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值