1. 程式人生 > >幾個要掌握的API

幾個要掌握的API

1.Stack棧

方法摘要
 boolean empty()
          測試堆疊是否為空。
 E peek()
          檢視堆疊頂部的物件,但不從堆疊中移除它。
 E pop()
          移除堆疊頂部的物件,並作為此函式的值返回該物件。
 E push(E item)
          把項壓入堆疊頂部。
 int
          返回物件在堆疊中的位置,以 1 為基數。
     

2.Vector向量

public class Vector<E>
extends AbstractList<E>implements
List
<E>, RandomAccess, Cloneable, Serializable

Vector 類可以實現可增長的物件陣列。與陣列一樣,它包含可以使用整數索引進行訪問的元件。但是,Vector 的大小可以根據需要增大或縮小,以適應建立Vector 後進行新增或移除項的操作。

每個向量會試圖通過維護 capacitycapacityIncrement 來優化儲存管理。capacity 始終至少應與向量的大小相等;這個值通常比後者大些,因為隨著將元件新增到向量中,其儲存將按capacityIncrement 的大小增加儲存塊。應用程式可以在插入大量元件前增加向量的容量;這樣就減少了增加的重分配的量。

由 Vector 的 iterator 和 listIterator 方法所返回的迭代器是快速失敗的:如果在迭代器建立後的任意時間從結構上修改了向量(通過迭代器自身的 remove 或 add 方法之外的任何其他方式),則迭代器將丟擲 ConcurrentModificationException。因此,面對併發的修改,迭代器很快就完全失敗,而不是冒著在將來不確定的時間任意發生不確定行為的風險。Vector 的 elements 方法返回的 Enumeration不是 快速失敗的。

注意,迭代器的快速失敗行為不能得到保證,一般來說,存在不同步的併發修改時,不可能作出任何堅決的保證。快速失敗迭代器盡最大努力丟擲 ConcurrentModificationException

。因此,編寫依賴於此異常的程式的方式是錯誤的,正確做法是:迭代器的快速失敗行為應該僅用於檢測 bug。


          構造一個空向量,使其內部資料陣列的大小為 10,其標準容量增量為零。

          構造一個包含指定 collection 中的元素的向量,這些元素按其 collection 的迭代器返回元素的順序排列。
(int initialCapacity)
          使用指定的初始容量和等於零的容量增量構造一個空向量。
(int initialCapacity, int capacityIncrement)
          使用指定的初始容量和容量增量構造一個空的向量。
 
方法摘要
 boolean add(E e)
          將指定元素新增到此向量的末尾。
 void add(int index, E element)
          在此向量的指定位置插入指定的元素。
 boolean
          將指定 Collection 中的所有元素新增到此向量的末尾,按照指定 collection 的迭代器所返回的順序新增這些元素。
 boolean
          在指定位置將指定 Collection 中的所有元素插入到此向量中。
 void
          將指定的元件新增到此向量的末尾,將其大小增加 1。
 int
          返回此向量的當前容量。
 void clear()
          從此向量中移除所有元素。
clone()
          返回向量的一個副本。
 boolean
          如果此向量包含指定的元素,則返回 true
 boolean
          如果此向量包含指定 Collection 中的所有元素,則返回 true。
 void
          將此向量的元件複製到指定的陣列中。
 E
          返回指定索引處的元件。
 void
          增加此向量的容量(如有必要),以確保其至少能夠儲存最小容量引數指定的元件數。
 boolean
          比較指定物件與此向量的相等性。
 E
          返回此向量的第一個元件(位於索引 0) 處的項)。
 E get(int index)
          返回向量中指定位置的元素。
 int
          返回此向量的雜湊碼值。
 int
          返回此向量中第一次出現的指定元素的索引,如果此向量不包含該元素,則返回 -1。
 int
          返回此向量中第一次出現的指定元素的索引,從 index 處正向搜尋,如果未找到該元素,則返回 -1。
 void
          將指定物件作為此向量中的元件插入到指定的 index 處。
 boolean
          測試此向量是否不包含元件。
 int
          返回此向量中最後一次出現的指定元素的索引;如果此向量不包含該元素,則返回 -1。
 int
          返回此向量中最後一次出現的指定元素的索引,從 index 處逆向搜尋,如果未找到該元素,則返回 -1。
 E (int index)
          移除此向量中指定位置的元素。
 boolean
          移除此向量中指定元素的第一個匹配項,如果向量不包含該元素,則元素保持不變。
 boolean
          從此向量中移除包含在指定 Collection 中的所有元素。
 void
 boolean
          從此向量中移除變數的第一個(索引最小的)匹配項。
 void
protected  void (int fromIndex, int toIndex)
          從此 List 中移除其索引位於 fromIndex(包括)與 toIndex(不包括)之間的所有元素。
 boolean
          在此向量中僅保留包含在指定 Collection 中的元素。
 E set(int index, E element)
          用指定的元素替換此向量中指定位置處的元素。
 void
          將此向量指定 index 處的元件設定為指定的物件。
 void (int newSize)
          設定此向量的大小。
 int size()
          返回此向量中的元件數。
 List<E> (int fromIndex, int toIndex)
          返回此 List 的部分檢視,元素範圍為從 fromIndex(包括)到 toIndex(不包括)。

          返回一個數組,包含此向量中以恰當順序存放的所有元素。
<T> T[]

          返回一個數組,包含此向量中以恰當順序存放的所有元素;返回陣列的執行時型別為指定陣列的型別。

          返回此向量的字串表示形式,其中包含每個元素的 String 表示形式。
 void
          對此向量的容量進行微調,使其等於向量的當前大小。
     

3.Map

介面 Map<K,V>

型別引數:
K - 此對映所維護的鍵的型別
V - 對映值的型別

將鍵對映到值的物件。一個對映不能包含重複的鍵;每個鍵最多隻能對映到一個值。

方法摘要
 void clear()
          從此對映中移除所有對映關係(可選操作)。
 boolean
          如果此對映包含指定鍵的對映關係,則返回 true
 boolean
          如果此對映將一個或多個鍵對映到指定值,則返回 true

          返回此對映中包含的對映關係的 Set 檢視。
 boolean
          比較指定的物件與此對映是否相等。
 V
          返回指定鍵所對映的值;如果此對映不包含該鍵的對映關係,則返回 null
 int
          返回此對映的雜湊碼值。
 boolean
          如果此對映未包含鍵-值對映關係,則返回 true
 Set<K>
          返回此對映中包含的鍵的 Set 檢視。
 V put(K key, V value)
          將指定的值與此對映中的指定鍵關聯(可選操作)。
 void (Map<? extends K,? extends V> m)
          從指定對映中將所有對映關係複製到此對映中(可選操作)。
 V
          如果存在一個鍵的對映關係,則將其從此對映中移除(可選操作)。
 int size()
          返回此對映中的鍵-值對映關係數。
 4.List連結串列

與 set 不同,列表通常允許重複的元素。更確切地講,列表通常允許滿足 e1.equals(e2) 的元素對 e1 e2,並且如果列表本身允許 null 元素的話,通常它們允許多個 null 元素。難免有人希望通過在使用者嘗試插入重複元素時丟擲執行時異常的方法來禁止重複的列表,但我們希望這種用法越少越好。List 介面在 iteratoraddremoveequalshashCode 方法的協定上加了一些其他約定,試圖新增不合格的元素會丟擲未經檢查的異常,通常是 NullPointerExceptionClassCastException。試圖查詢不合格的元素是否存在可能會丟擲異常,也可能簡單地返回 false;某些實現會採用前一種行為,而某些則採用後者。概括地說,試圖對不合格元素執行操作時,如果完成該操作後不會導致在列表中插入不合格的元素,則該操作可能丟擲一個異常,也可能成功,這取決於實現的選擇。此介面的規範中將這樣的異常標記為“可選”。

方法摘要
 boolean add(E e)
          向列表的尾部新增指定的元素(可選操作)。
 void add(int index, E element)
          在列表的指定位置插入指定元素(可選操作)。
 boolean
          新增指定 collection 中的所有元素到此列表的結尾,順序是指定 collection 的迭代器返回這些元素的順序(可選操作)。
 boolean
          將指定 collection 中的所有元素都插入到列表中的指定位置(可選操作)。
 void clear()
          從列表中移除所有元素(可選操作)。
 boolean
          如果列表包含指定的元素,則返回 true
 boolean
          如果列表包含指定 collection 的所有元素,則返回 true
 boolean
          比較指定的物件與列表是否相等。
 E get(int index)
          返回列表中指定位置的元素。
 int
          返回列表的雜湊碼值。
 int
          返回此列表中第一次出現的指定元素的索引;如果此列表不包含該元素,則返回 -1。
 boolean
          如果列表不包含元素,則返回 true

          返回按適當順序在列表的元素上進行迭代的迭代器。
 int
          返回此列表中最後出現的指定元素的索引;如果列表不包含此元素,則返回 -1。

          返回列表中元素的列表迭代器(按適當順序),從列表的指定位置開始。
 E (int index)
          移除列表中指定位置的元素(可選操作)。
 boolean
          從此列表中移除第一次出現的指定元素(如果存在)(可選操作)。
 boolean
          從列表中移除指定 collection 中包含的其所有元素(可選操作)。
 boolean
          僅在列表中保留指定 collection 中所包含的元素(可選操作)。
 E set(int index, E element)
          用指定元素替換列表中指定位置的元素(可選操作)。
 int size()
          返回列表中的元素數。
 List<E> (int fromIndex, int toIndex)
          返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之間的部分檢視。

          返回按適當順序包含列表中的所有元素的陣列(從第一個元素到最後一個元素)。
<T> T[]

          返回按適當順序(從第一個元素到最後一個元素)包含列表中所有元素的陣列;返回陣列的執行時型別是指定陣列的執行時型別。
5.Set 集合 一個不包含重複元素的 collection。更確切地講,set 不包含滿足 e1.equals(e2) 的元素對 e1e2,並且最多包含一個 null 元素

對這些構造方法的其他規定是(不要奇怪),所有構造方法必須建立一個不包含重複元素的 set(正如上面所定義的)。

注:如果將可變物件用作 set 元素,那麼必須極其小心。如果物件是 set 中某個元素,以一種影響 equals 比較的方式改變物件的值,那麼 set 的行為就是不確定的。此項禁止的一個特殊情況是不允許某個 set 包含其自身作為元素。

某些 set 實現對其所包含的元素有所限制。例如,某些實現禁止 null 元素,而某些則對其元素的型別所有限制。試圖新增不合格的元素會丟擲未經檢查的異常,通常是 NullPointerExceptionClassCastException。試圖查詢不合格的元素是否存在可能會丟擲異常,也可能簡單地返回 false;某些實現會採用前一種行為,而某些則採用後者。概括地說,試圖對不合格元素執行操作時,如果完成該操作後不會導致在 set 中插入不合格的元素,則該操作可能丟擲一個異常,也可能成功,這取決於實現的選擇。此介面的規範中將這樣的異常標記為“可選”。 

方法摘要
 boolean add(E e)
          如果 set 中尚未存在指定的元素,則新增此元素(可選操作)。
 boolean
          如果 set 中沒有指定 collection 中的所有元素,則將其新增到此 set 中(可選操作)。
 void clear()
          移除此 set 中的所有元素(可選操作)。
 boolean
          如果 set 包含指定的元素,則返回 true
 boolean
          如果此 set 包含指定 collection 的所有元素,則返回 true
 boolean
          比較指定物件與此 set 的相等性。
 int
          返回 set 的雜湊碼值。
 boolean
          如果 set 不包含元素,則返回 true

          返回在此 set 中的元素上進行迭代的迭代器。
 boolean
          如果 set 中存在指定的元素,則將其移除(可選操作)。
 boolean
          移除 set 中那些包含在指定 collection 中的元素(可選操作)。
 boolean
          僅保留 set 中那些包含在指定 collection 中的元素(可選操作)。
 int size()
          返回 set 中的元素數(其容量)。

          返回一個包含 set 中所有元素的陣列。
<T> T[]

          返回一個包含此 set 中所有元素的陣列;返回陣列的執行時型別是指定陣列的型別。
6.Queue<E>佇列

在處理元素前用於儲存元素的 collection。除了基本的 Collection 操作外,佇列還提供其他的插入、提取和檢查操作。每個方法都存在兩種形式:一種丟擲異常(操作失敗時),另一種返回一個特殊值(nullfalse,具體取決於操作)。插入操作的後一種形式是用於專門為有容量限制的 Queue 實現設計的;在大多數實現中,插入操作不會失敗。

如果可能,offer 方法可插入一個元素,否則返回 false。這與 Collection.add 方法不同,該方法只能通過丟擲未經檢查的異常使新增元素失敗。offer 方法設計用於正常的失敗情況,而不是出現異常的情況,例如在容量固定(有界)的佇列中。

remove() poll() 方法可移除和返回佇列的頭。到底從佇列中移除哪個元素是佇列排序策略的功能,而該策略在各種實現中是不同的。remove()poll() 方法僅在佇列為空時其行為有所不同:remove() 方法丟擲一個異常,而 poll() 方法則返回 null

Queue 介面並未定義阻塞佇列的方法,而這在併發程式設計中是很常見的。BlockingQueue 介面定義了那些等待元素出現或等待佇列中有可用空間的方法,這些方法擴充套件了此介面。

Queue 實現通常不允許插入 null 元素,儘管某些實現(如 LinkedList)並不禁止插入 null。即使在允許 null 的實現中,也不應該將 null 插入到 Queue 中,因為 null 也用作 poll 方法的一個特殊返回值,表明佇列不包含元素。

Queue 實現通常未定義 equalshashCode 方法的基於元素的版本,而是從 Object 類繼承了基於身份的版本,因為對於具有相同元素但有不同排序屬性的佇列而言,基於元素的相等性並非總是定義良好的。 

方法摘要
 boolean add(E e)
          將指定的元素插入此佇列(如果立即可行且不會違反容量限制),在成功時返回 true,如果當前沒有可用的空間,則丟擲 IllegalStateException
 E
          獲取,但是不移除此佇列的頭。
 boolean offer(E e)
          將指定的元素插入此佇列(如果立即可行且不會違反容量限制),當使用有容量限制的佇列時,此方法通常要優於 add(E),後者可能無法插入元素,而只是丟擲一個異常。
 E peek()
          獲取但不移除此佇列的頭;如果此佇列為空,則返回 null
 E poll()
          獲取並移除此佇列的頭,如果此佇列為空,則返回 null
 E
          獲取並移除此佇列的頭。
7.

類 PriorityQueue<E>優先佇列

優先順序佇列的元素按照其自然順序進行排序,或者根據構造佇列時提供的 Comparator 進行排序,具體取決於所使用的構造方法。優先順序佇列不允許使用 null 元素。依靠自然順序的優先順序佇列還不允許插入不可比較的物件(這樣做可能導致 ClassCastException)。

此佇列的 是按指定排序方式確定的最小 元素。如果多個元素都是最小值,則頭是其中一個元素——選擇方法是任意的。佇列獲取操作 pollremovepeekelement 訪問處於佇列頭的元素。

優先順序佇列是無界的,但是有一個內部容量,控制著用於儲存佇列元素的陣列大小。它通常至少等於佇列的大小。隨著不斷向優先順序佇列新增元素,其容量會自動增加。無需指定容量增加策略的細節。

此類及其迭代器實現了 CollectionIterator 介面的所有可選 方法。方法 iterator() 中提供的迭代器 保證以任何特定的順序遍歷優先順序佇列中的元素。如果需要按順序遍歷,請考慮使用 Arrays.sort(pq.toArray())

注意,此實現不是同步的。如果多個執行緒中的任意執行緒修改了佇列,則這些執行緒不應同時訪問 PriorityQueue 例項。相反,請使用執行緒安全的 PriorityBlockingQueue 類。

實現注意事項:此實現為排隊和出隊方法(offerpollremove()add)提供 O(log(n)) 時間;為 remove(Object)contains(Object) 方法提供線性時間;為獲取方法(peekelementsize)提供固定時間。 

構造方法摘要

          使用預設的初始容量(11)建立一個 PriorityQueue,並根據其自然順序對元素進行排序。

          建立包含指定 collection 中元素的 PriorityQueue
(int initialCapacity)
          使用指定的初始容量建立一個 PriorityQueue,並根據其自然順序對元素進行排序。
(int initialCapacity, Comparator<? super E> comparator)
          使用指定的初始容量建立一個 PriorityQueue,並根據指定的比較器對元素進行排序。

          建立包含指定優先順序佇列元素的 PriorityQueue

          建立包含指定有序 set 元素的 PriorityQueue
 
方法摘要
 boolean add(E e)
          將指定的元素插入此優先順序佇列。
 void clear()
          從此優先順序佇列中移除所有元素。

          返回用來對此佇列中的元素進行排序的比較器;如果此佇列根據其元素的自然順序進行排序,則返回 null
 boolean
          如果此佇列包含指定的元素,則返回 true

          返回在此佇列中的元素上進行迭代的迭代器。
 boolean offer(E e)
          將指定的元素插入此優先順序佇列。
 E peek()
          獲取但不移除此佇列的頭;如果此佇列為空,則返回 null
 E poll()
          獲取並移除此佇列的頭,如果此佇列為空,則返回 null
 boolean
          從此佇列中移除指定元素的單個例項(如果存在)。
 int size()
          返回此 collection 中的元素數。

          返回一個包含此佇列所有元素的陣列。
<T> T[]

          返回一個包含此佇列所有元素的陣列;返回陣列的執行時型別是指定陣列的型別。