public class Collections
extends Object
java.util.Collections類直接繼承自Object類。
Collections類由操作 collection 的靜態方法組成。它包含在 collection 上操作的多態算法,即“包裝器”,包裝器返回由指定 collection 支持的新 collection,以及少數其他內容。如果爲此類的方法所提供的 collection 或類對象爲 null,則這些方法都將拋出 NullPointerException。
Collections類中所含多態算法的文檔通常包括對實現 的簡短描述。應該將這類描述視爲實現注意事項,而不是規範 的一部分。實現者應該可以隨意使用其他算法替代,只要遵循規範本身即可。(例如,sort 使用的算法不一定是合併排序算法,但它必須是穩定的。)
static <T> boolea addAll(Collection<? super T> c, T... elements) | 將所有指定元素添加到指定 collection 中。此便捷方法的行爲與 c.addAll(Arrays.asList(elements)) 的行爲是相同的,但在大多數實現下,此方法運行起來可能要快得多。 |
static <T> Queue<T> asLifoQueue(Deque<T> deque) | 以後進先出 (Lifo(類似棧)) Queue 的形式返回某個 Deque 的視圖。方法 add 被映射到 push,remove 被映射到 pop 等等。在希望使用某一方法獲取一個 Queue 並且需要它具有 Lifo 順序時,此方法很有用。 |
static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key) -------------------------- static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c) 類似 | 使用二分搜索法搜索指定列表,以獲得指定對象。在進行此調用之前,必須根據指定的比較器對列表進行升序排序(通過 sort(List, Comparator) 方法)。如果搜索鍵包含在列表中,則返回搜索鍵的索引;否則返回 (-(插入點) - 1)。 此方法對“隨機訪問”的列表運行 log(n) 次(它提供接近固定時間的位置訪問)。如果指定列表沒有實現 RandomAccess 接口並且是一個大型列表,則此方法將執行基於迭代器的二分搜索,執行 O(n) 次鏈接遍歷和 O(log n) 次元素比較。 |
static <E> Collection<E> checkedCollection(Collection<E> c, Class<E> type) | 返回指定 collection 的一個動態類型安全視圖。試圖插入一個錯誤類型的元素將導致立即拋出 ClassCastException。 Collection<String> c = new HashSet<String>(); 再次運行程序會造成它在將類型不正確的元素插入 collection 的地方失敗,從而清楚地識別問題的來源。 |
static <T> void copy(List<? super T> dest, List<? extends T> src) | 將所有元素從一個列表複製到另一個列表。執行此操作後,目標列表中每個已複製元素的索引將等同於源列表中該元素的索引。目標列表的長度至少必須等於源列表。如果目標列表更長一些,也不會影響目標列表中的其餘元素。 |
static boolea disjoint(Collection<?> c1, Collection<?> c2) | 如果兩個指定 collection 中沒有相同的元素,則返回 true。 |
static<T> void fill(List<? super T> list, T obj) | 使用指定元素替換指定列表中的所有元素。此方法以線性時間運行。 |
static int frequency(Collection<?> c, Object o) | 返回指定 collection 中等於指定對象的元素數。 |
static int indexOfSubList(List<?> source, List<?> target) | 返回指定源列表中第一次出現指定目標列表的起始位置;如果沒有出現這樣的列表,則返回 -1。 |
static int lastIndexOfSubList(List<?> source, List<?> target) | 返回指定源列表中最後一次出現指定目標列表的起始位置;如果沒有出現這樣的列表,則返回 -1。 |
static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll) --------------- min類似 | 根據元素的自然順序,返回給定 collection 的最大元素。collection 中的所有元素都必須實現 Comparable 接口。此方法在整個 collection 上進行迭代,所以它需要的時間與 collection 的大小成正比。 |
static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp) ------------------ min類似 | 根據指定比較器產生的順序,返回給定 collection 的最大元素。 |
static <T> boolean replaceAll(List<T> list, T oldVal, T newVal) | 使用另一個值替換列表中出現的所有某一指定值。 |
static void reverse(List<?> list) | 反轉指定列表中元素的順序。 此方法以線性時間運行。 |
static void rotate(List<?> list, int distance) | 根據指定的距離輪換指定列表中的元素。 假設 list 包含 [t, a, n, k, s]。在調用 Collections.rotate(list, 1)(或 Collections.rotate(list, -4))之後,list 將包含 [s, t, a, n, k]。 此方法用於子列表時非常有用,可以在保留其餘元素順序的同時,在列表中移動一個或多個元素。 假設 list 包含 [a, b, c, d, e]。要將索引 1 處的元素(b)向前移動兩個位置,請執行以下調用: |
static void shuffle(List<?> list) | 使用默認隨機源對指定列表進行置換。所有置換髮生的可能性都是大致相等的。 此方法以線性時間運行。如果指定列表沒有實現 RandomAccess 接口並且是一個大型列表,則此實現在改組列表前將指定列表轉儲到數組中,並將改組後的數組轉儲回列表中。這避免了二次行爲,該行爲是原地改組一個“有序訪問”列表引起的。 |
static <T extends Comparable<? super T>> void sort(List<T> list) ---------- static <T> void sort(List<T> list, Comparator<? super T> c) 類似 | 根據元素的自然順序 對指定列表按升序進行排序。列表中的所有元素都必須實現 Comparable 接口。 此排序方法具有穩定性:不會因調用 sort 方法而對相等的元素進行重新排序。 |
static void swap(List<?> list, int i, int j) | 在指定列表的指定位置處交換元素。 |
static <T> Collection<T> synchronizedCollection(Collection<T> c) | 返回指定 collection 支持的同步(線程安全的)collection。爲了保證按順序訪問,必須通過返回的 collection 完成所有對底層實現 collection 的訪問。 在返回的 collection 上進行迭代時,用戶必須手工在返回的 collection 上進行同步: Collection c = Collections.synchronizedCollection(myCollection); ... synchronized(c) { Iterator i = c.iterator(); // Must be in the synchronized block while (i.hasNext()) foo(i.next()); } |
static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c) | 返回指定 collection 的不可修改視圖。此方法允許模塊爲用戶提供對內部 collection 的“只讀”訪問。在返回的 collection 上執行的查詢操作將“讀完”指定的 collection。試圖修改返回的 collection(不管是直接修改還是通過其迭代器進行修改)將導致拋出 UnsupportedOperationException。 |