Collection 接口與 Collections 工具類

目錄

 

1. Collection 接口

2. Collections 類

2.1 字段列表

2.2 方法列表

2.3 常用方法使用代碼樣例


1. java.util 包裏的接口 Collection<E>

這裏是我寫的關於 Collection 的文章:Collection ,List,Set 接口

Collection 接口是 集合層次 的根接口,所有的集合都會去實現裏面定義的基本功能。

定義:public interface Collection<E> extends Iterable<E>

2. Collections 類

java.util 類 Collections

定義:public class Collections extends Object

此類完全由在 collection 上進行操作或返回 collection 的靜態方法組成。它包含在 collection 上操作的多態算法,即“包裝器”,包裝器返回由指定 collection 支持的新 collection,以及少數其他內容。

如果爲此類的方法所提供的 collection 或類對象爲 null,則這些方法都將拋出 NullPointerException。

此類中所含多態算法的文檔通常包括對實現 的簡短描述。應該將這類描述視爲實現注意事項,而不是規範 的一部分。實現者應該可以隨意使用其他算法替代,只要遵循規範本身即可。(例如,sort 使用的算法不一定是合併排序算法,但它必須是穩定的。)

此類中包含的“破壞性”算法,即可修改其所操作的 collection 的算法,該算法被指定在 collection 不支持適當的可變基元(比如 set 方法)時拋出 UnsupportedOperationException。如果調用不會對 collection 產生任何影響,那麼這些算法可能(但不要求)拋出此異常。例如,在已經排序的、不可修改列表上調用 sort 方法可能會(也可能不會)拋出 UnsupportedOperationException。

2.1 字段列表

字段摘要 
static List EMPTY_LIST // 空的列表(不可變的)。 
static Map EMPTY_MAP // 空的映射(不可變的)。 
static Set EMPTY_SET // 空的 set(不可變的)。 

2.2 方法列表

此工具類裏面提供了衆多對 List,Set,Map 的操作方法,極大地方便了對集合的操作。且裏面的方法都是靜態的。

方法摘要
static <T> boolean addAll(Collection<? super T> c, T... elements) // 將所有指定元素添加到指定 collection 中。 
static <T extends Comparable<? super T>> void sort(List<T> list) // 根據元素的自然順序 對指定列表按升序進行排序。 
static <T> void sort(List<T> list, Comparator<? super T> c) // 根據指定比較器產生的順序對指定列表進行排序。 
static void reverse(List<?> list) // 反轉指定列表中元素的順序。 
static void swap(List<?> list, int i, int j) // 在指定列表的指定位置處交換元素。
static <T> void fill(List<? super T> list, T obj) // 使用指定元素替換指定列表中的所有元素。 
static <T> boolean replaceAll(List<T> list, T oldVal, T newVal) // 使用另一個值替換列表中出現的所有某一指定值。 
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) // 使用二分搜索法搜索指定列表,以獲得指定對象。 
static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp) // 根據指定比較器產生的順序,返回給定 collection 的最大元素。 
static <T> T min(Collection<? extends T> coll, Comparator<? super T> comp) // 根據指定比較器產生的順序,返回給定 collection 的最小元素。
static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll) // 根據元素的自然順序,返回給定 collection 的最大元素。 
static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll) // 根據元素的自然順序 返回給定 collection 的最小元素。 

static <T> Comparator<T> reverseOrder() // 返回一個比較器,它強行逆轉實現了 Comparable 接口的對象 collection 的自然順序。 
static <T> Comparator<T> reverseOrder(Comparator<T> cmp) // 返回一個比較器,它強行逆轉指定比較器的順序。 
static <T> ArrayList<T> list(Enumeration<T> e) // 返回一個數組列表,它按返回順序包含指定枚舉返回的元素。 
static <T> void copy(List<? super T> dest, List<? extends T> src) // 將所有元素從一個列表複製到另一個列表。 
static boolean disjoint(Collection<?> c1, Collection<?> c2) // 如果兩個指定 collection 中沒有相同的元素,則返回 true。 
static <T> Enumeration<T> enumeration(Collection<T> c) // 返回一個指定 collection 上的枚舉。 
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> List<T> nCopies(int n, T o) // 返回由指定對象的 n 個副本組成的不可變列表。 
static <E> Set<E> newSetFromMap(Map<E,Boolean> map) // 返回指定映射支持的 set。 
static void rotate(List<?> list, int distance) // 根據指定的距離輪換指定列表中的元素。 
static void shuffle(List<?> list) // 使用默認隨機源對指定列表進行置換。 
static void shuffle(List<?> list, Random rnd) // 使用指定的隨機源對指定列表進行置換。 
static <T> Queue<T> asLifoQueue(Deque<T> deque) // 以後進先出 (Lifo) Queue 的形式返回某個 Deque 的視圖。 

// 獲取集合的空的不可變的集合對象
static <T> List<T> emptyList() // 返回空的列表(不可變的)。 
static <T> Set<T> emptySet() // 返回空的 set(不可變的)。 
static <K,V> Map<K,V> emptyMap() // 返回空的映射(不可變的)。 

// 獲取包含指定對象的不可變集合對象
static <T> List<T> singletonList(T o) // 返回一個只包含指定對象的不可變列表。 
static <T> Set<T> singleton(T o) // 返回一個只包含指定對象的不可變 set。 
static <K,V> Map<K,V> singletonMap(K key, V value) // 返回一個不可變的映射,它只將指定鍵映射到指定值。 

// 獲取各種集合的線程同步對象
static <T> Collection<T> synchronizedCollection(Collection<T> c) // 返回指定 collection 支持的同步(線程安全的)collection。 
static <T> List<T> synchronizedList(List<T> list) // 返回指定列表支持的同步(線程安全的)列表。 
static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) // 返回由指定映射支持的同步(線程安全的)映射。 
static <T> Set<T> synchronizedSet(Set<T> s) // 返回指定 set 支持的同步(線程安全的)set。 
static <K,V> SortedMap<K,V> synchronizedSortedMap(SortedMap<K,V> m) // 返回指定有序映射支持的同步(線程安全的)有序映射。 
static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s) // 返回指定有序 set 支持的同步(線程安全的)有序 set。 

// 獲取集合的動態類型安全視圖 -- 試圖插入一個錯誤類型的元素將導致立即拋出 ClassCastException。
static <E> Collection<E> checkedCollection(Collection<E> c, Class<E> type) // 返回指定 collection 的一個動態類型安全視圖。 
static <E> List<E> checkedList(List<E> list, Class<E> type) // 返回指定列表的一個動態類型安全視圖。 
static <K,V> Map<K,V> checkedMap(Map<K,V> m, Class<K> keyType, Class<V> valueType) // 返回指定映射的一個動態類型安全視圖。 
static <E> Set<E> checkedSet(Set<E> s, Class<E> type) // 返回指定 set 的一個動態類型安全視圖。 
static <K,V> SortedMap<K,V> checkedSortedMap(SortedMap<K,V> m, Class<K> keyType, Class<V> valueType) // 返回指定有序映射的一個動態類型安全視圖。 
static <E> SortedSet<E> checkedSortedSet(SortedSet<E> s, Class<E> type) // 返回指定有序 set 的一個動態類型安全視圖。 

// 獲取各種集合的不可修改視圖 -- 對返回的對象只具有 “可讀” 權限,如果試圖修改會報:UnsupportedOperationException
static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c) // 返回指定 collection 的不可修改視圖。 
static <T> List<T> unmodifiableList(List<? extends T> list) // 返回指定列表的不可修改視圖。 
static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m) // 返回指定映射的不可修改視圖。 
static <T> Set<T> unmodifiableSet(Set<? extends T> s) // 返回指定 set 的不可修改視圖。 
static <K,V> SortedMap<K,V> unmodifiableSortedMap(SortedMap<K,? extends V> m) // 返回指定有序映射的不可修改視圖。 
static <T> SortedSet<T> unmodifiableSortedSet(SortedSet<T> s) // 返回指定有序 set 的不可修改視圖。 

2.3 常用方法使用代碼樣例

public static void main(String[] args) {
	List<String> list = new ArrayList<>();
	list.add("6sfd");
	list.add("66ddddd6");
	list.add("66ddd6d");
	list.add("a15dd");
	list.add("dddc6");
	list.add("99ccc9");
	
	Collections.sort(list);
	System.out.println(list);
	// 如果返回負數,說明不存在,改負數進行變換後即時,插入位置  -(insertion point) - 1 = return
	// insertion point = - return - 1
	System.out.println(Collections.binarySearch(list, "99ccc9"));
	Collections.reverse(list);
	System.out.println(list);
	Collections.sort(list, new MyLenCompartor());
	System.out.println(list);
	System.out.println(Collections.max(list, new MyLenCompartor()));
}
/*
運行結果:
    [66ddd6d, 66ddddd6, 6sfd, 99ccc9, a15dd, dddc6]
    3
    [dddc6, a15dd, 99ccc9, 6sfd, 66ddddd6, 66ddd6d]
    [6sfd, a15dd, dddc6, 99ccc9, 66ddd6d, 66ddddd6]
    66ddddd6

*/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章