鴻蒙OS Collections

2022-07-15 16:18 更新

Collections

java.lang.Object

|---java.util.Collections

public class Collections
extends Object

此類僅由對(duì)集合進(jìn)行操作或返回集合的靜態(tài)方法組成。 它包含對(duì)集合進(jìn)行操作的多態(tài)算法,“包裝器”,它返回由指定集合支持的新集合,以及其他一些零碎的東西。

如果提供給它們的集合或類對(duì)象為空,則此類的方法都會(huì)拋出 NullPointerException。

此類中包含的多態(tài)算法的文檔通常包括對(duì)實(shí)現(xiàn)的簡(jiǎn)要描述。此類描述應(yīng)被視為實(shí)現(xiàn)說(shuō)明,而不是規(guī)范的一部分。只要遵守規(guī)范本身,實(shí)現(xiàn)者應(yīng)該可以隨意替換其他算法。 (例如,sort 使用的算法不必是歸并排序,但它必須是穩(wěn)定的。)

此類中包含的“破壞性”算法,即修改它們操作的集合的算法,被指定為在集合不支持適當(dāng)?shù)耐蛔冊(cè)Z(yǔ)(例如 set 方法)時(shí)拋出 UnsupportedOperationException。如果調(diào)用對(duì)集合沒(méi)有影響,這些算法可能會(huì)(但不是必須)拋出此異常。例如,在已排序的不可修改列表上調(diào)用 sort 方法可能會(huì)也可能不會(huì)拋出 UnsupportedOperationException。

此類是 Java 集合框架的成員。

字段摘要

修飾符和類型 字段 描述
static List EMPTY_LIST 空列表(不可變)。
static Map EMPTY_MAP 空map(不可變)。
static Set EMPTY_SET 空集(不可變)。

方法總結(jié)

修飾符和類型 方法 描述
static <T> boolean addAll(Collection<? super T> c, T... elements) 將所有指定元素添加到指定集合。
static <T> Queue<T> asLifoQueue(Deque<T> deque) 將 Deque 的視圖返回為后進(jìn)先出 (Lifo) 隊(duì)列。
static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key) 使用二分搜索算法在指定列表中搜索指定對(duì)象。
static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c) 使用二分搜索算法在指定列表中搜索指定對(duì)象。
static <E> Collection<E> checkedCollection(Collection<E> c, Class<E> type) 返回指定集合的動(dòng)態(tài)類型安全視圖。
static <E> List<E> checkedList(List<E> list, Class<E> type) 返回指定列表的動(dòng)態(tài)類型安全視圖。
static <K,V> Map<K,V> checkedMap(Map<K,V> m, Class<K> keyType, Class<V> valueType) 返回指定映射的動(dòng)態(tài)類型安全視圖。
static <K,V> NavigableMap<K,V> checkedNavigableMap(NavigableMap<K,V> m, Class<K> keyType, Class<V> valueType) 返回指定可導(dǎo)航地圖的動(dòng)態(tài)類型安全視圖。
static <E> NavigableSet<E> checkedNavigableSet(NavigableSet<E> s, Class<E> type) 返回指定導(dǎo)航集的動(dòng)態(tài)類型安全視圖。
static <E> Queue<E> checkedQueue(Queue<E> queue, Class<E> type) 返回指定隊(duì)列的動(dòng)態(tài)類型安全視圖。
static <E> Set<E> checkedSet(Set<E> s, Class<E> type) 返回指定集合的動(dòng)態(tài)類型安全視圖。
static <K,V> SortedMap<K,V> checkedSortedMap(SortedMap<K,V> m, Class<K> keyType, Class<V> valueType) 返回指定排序映射的動(dòng)態(tài)類型安全視圖。
static <E> SortedSet<E> checkedSortedSet(SortedSet<E> s, Class<E> type) 返回指定排序集的動(dòng)態(tài)類型安全視圖。
static <T> void copy(List<? super T> dest, List<? extends T> src) 將一個(gè)列表中的所有元素復(fù)制到另一個(gè)列表中。
static boolean disjoint(Collection<?> c1, Collection<?> c2) 如果兩個(gè)指定的集合沒(méi)有共同的元素,則返回 true。
static <T> Enumeration<T> emptyEnumeration() 返回一個(gè)沒(méi)有元素的枚舉。
static <T> Iterator<T> emptyIterator() 返回一個(gè)沒(méi)有元素的迭代器。
static <T> List<T> emptyList() 返回一個(gè)空列表(不可變)。
static <T> ListIterator<T> emptyListIterator() 返回一個(gè)沒(méi)有元素的列表迭代器。
static <K,V> Map<K,V> emptyMap() 返回一個(gè)空映射(不可變)。
static <K,V> NavigableMap<K,V> emptyNavigableMap() 返回一個(gè)空的可導(dǎo)航map(不可變)。
static <E> NavigableSet<E> emptyNavigableSet() 返回一個(gè)空的可導(dǎo)航集(不可變)。
static <T> Set<T> emptySet() 返回一個(gè)空集(不可變)。
static <K,V> SortedMap<K,V> emptySortedMap() 返回一個(gè)空的排序映射(不可變)。
static <E> SortedSet<E> emptySortedSet() 返回一個(gè)空的排序集(不可變)。
static <T> Enumeration<T> enumeration(Collection<T> c) 返回指定集合的枚舉。
static <T> void fill(List<? super T> list, T obj) 用指定元素替換指定列表的所有元素。
static int frequency(Collection<?> c, Object o) 返回指定集合中等于指定對(duì)象的元素?cái)?shù)。
static int indexOfSubList(List<?> source, List<?> target) 返回指定源列表中指定目標(biāo)列表第一次出現(xiàn)的起始位置,如果沒(méi)有出現(xiàn),則返回 -1。
static int lastIndexOfSubList(List<?> source, List<?> target) 返回指定目標(biāo)列表在指定源列表中最后一次出現(xiàn)的起始位置,如果沒(méi)有出現(xiàn),則返回 -1。
static <T> ArrayList<T> list(Enumeration<T> e) 按枚舉返回的順序返回一個(gè)數(shù)組列表,其中包含指定枚舉返回的元素。
static <T extends Object & Comparable<? super T>>T max(Collection<? extends T> coll) 根據(jù)元素的自然順序返回給定集合的最大元素。
static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp) 根據(jù)指定比較器誘導(dǎo)的順序返回給定集合的最大元素。
static <T extends Object & Comparable<? super T>>T min(Collection<? extends T> coll) 根據(jù)元素的自然順序返回給定集合的最小元素。
static <T> T min(Collection<? extends T> coll, Comparator<? super T> comp) 根據(jù)指定比較器誘導(dǎo)的順序返回給定集合的最小元素。
static <T> List<T> nCopies(int n, T o) 返回由指定對(duì)象的 n 個(gè)副本組成的不可變列表。
static <E> Set<E> newSetFromMap(MapE,Boolean map) 返回由指定映射支持的集合。
static <T> boolean replaceAll(List<T> list, T oldVal, T newVal) 將列表中一個(gè)指定值的所有出現(xiàn)替換為另一個(gè)。
static void reverse(List<?> list) 反轉(zhuǎn)指定列表中元素的順序。
static <T> Comparator<T> reverseOrder() 返回一個(gè)比較器,它對(duì)實(shí)現(xiàn) Comparable 接口的對(duì)象集合施加自然順序的逆向。
static <T> Comparator<T> reverseOrder(Comparator<T> cmp) 返回一個(gè)比較器,它強(qiáng)制指定比較器的反向排序。
static void rotate(List<?> list, int distance) 將指定列表中的元素旋轉(zhuǎn)指定距離。
static void shuffle(List<?> list) 使用默認(rèn)隨機(jī)源隨機(jī)排列指定列表。
static void shuffle(List<?> list, Random rnd) 使用指定的隨機(jī)源隨機(jī)排列指定的列表。
static <T> Set<T> singleton(T o) 返回一個(gè)只包含指定對(duì)象的不可變集合。
static <T> List<T> singletonList(T o) 返回僅包含指定對(duì)象的不可變列表。
static <K,V> Map<K,V> singletonMap(K key, V value) 返回一個(gè)不可變映射,僅將指定的鍵映射到指定的值。
static <T extends Comparable<? super T>>void sort(List<T> list) 根據(jù)其元素的 Comparable 對(duì)指定列表進(jìn)行升序排序。
static <T> void sort(List<T> list, Comparator<? super T> c) 根據(jù)指定比較器產(chǎn)生的順序?qū)χ付斜磉M(jìn)行排序。
static void swap(List<?> list, int i, int j) 交換指定列表中指定位置的元素。
static <T> Collection<T> synchronizedCollection(Collection<T> c) 返回由指定集合支持的同步(線程安全)集合。
static <T> List<T> synchronizedList(List<T> list) 返回由指定列表支持的同步(線程安全)列表。
static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) 返回由指定映射支持的同步(線程安全)映射。
static <K,V> NavigableMap<K,V> synchronizedNavigableMap(NavigableMap<K,V> m) 返回由指定可導(dǎo)航地圖支持的同步(線程安全)可導(dǎo)航地圖。
static <T> NavigableSet<T> synchronizedNavigableSet(NavigableSet<T> s) 返回由指定導(dǎo)航集支持的同步(線程安全)導(dǎo)航集。
static <T> Set<T> synchronizedSet(Set<T> s) 返回由指定集支持的同步(線程安全)集。
static <K,V> SortedMap<K,V> synchronizedSortedMap(SortedMap<K,V> m) 返回由指定排序映射支持的同步(線程安全)排序映射。
static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s) 返回由指定排序集支持的同步(線程安全)排序集。
static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c) 返回指定集合的不可修改視圖。
static <T> List<T> unmodifiableList(List<? extends T> list) 返回指定列表的不可修改視圖。
static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m) 返回指定地圖的不可修改視圖。
static <K,V> NavigableMap<K,V> unmodifiableNavigableMap(NavigableMap<K,? extends V> m) 返回指定導(dǎo)航地圖的不可修改視圖。
static <T> NavigableSet<T> unmodifiableNavigableSet(NavigableSet<T> s) 返回指定導(dǎo)航集的不可修改視圖。
static <T> Set<T> unmodifiableSet(Set<? extends T> s) 返回指定集合的不可修改視圖。
static <K,V> SortedMap<K,V> unmodifiableSortedMap(SortedMap<K,? extends V> m) 返回指定排序地圖的不可修改視圖。
static <T> SortedSet<T> unmodifiableSortedSet(SortedSet<T> s) 返回指定排序集的不可修改視圖。
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

字段詳細(xì)信息

EMPTY_LIST

public static final List EMPTY_LIST

空列表(不可變)。 這個(gè)列表是可序列化的。

EMPTY_MAP

public static final Map EMPTY_MAP

空地圖(不可變)。 該地圖是可序列化的。

EMPTY_SET

public static final Set EMPTY_SET

空集(不可變)。 這個(gè)集合是可序列化的。

方法詳情

sort

public static <T extends Comparable<? super T>> void sort(List<T> list)

根據(jù)其元素的 Comparable 對(duì)指定列表進(jìn)行升序排序。 列表中的所有元素都必須實(shí)現(xiàn) Comparable 接口。 此外,列表中的所有元素必須相互可比較(即,e1.compareTo(e2) 不得為列表中的任何元素 e1 和 e2 拋出 ClassCastException)。

這種排序保證是穩(wěn)定的:相同的元素不會(huì)因?yàn)榕判蚨匦屡判颉?/p>

指定的列表必須是可修改的,但不必調(diào)整大小。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 列表中對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
list 要排序的列表。

Throws:

Throw名稱 Throw描述
ClassCastException 如果列表包含不可相互比較的元素(例如,字符串和整數(shù))。
UnsupportedOperationException 如果指定列表的列表迭代器不支持設(shè)置操作。
IllegalArgumentException (可選)如果實(shí)現(xiàn)檢測(cè)到列表元素的自然順序被發(fā)現(xiàn)違反了 Comparable 合約

sort

public static <T> void sort(List<T> list, Comparator<? super T> c)

根據(jù)指定比較器產(chǎn)生的順序?qū)χ付斜磉M(jìn)行排序。 列表中的所有元素必須使用指定的比較器進(jìn)行相互比較(即,c.compare(e1, e2) 不得為列表中的任何元素 e1 和 e2 拋出 ClassCastException)。

這種排序保證是穩(wěn)定的:相同的元素不會(huì)因?yàn)榕判蚨匦屡判颉?/p>

指定的列表必須是可修改的,但不必調(diào)整大小。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 列表中對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
list 要排序的列表。
c 比較器來(lái)確定列表的順序。 空值表示應(yīng)使用元素的自然順序。

Throws:

Throw名稱 Throw描述
ClassCastException 如果列表包含使用指定比較器不能相互比較的元素。
UnsupportedOperationException 如果指定列表的列表迭代器不支持設(shè)置操作。
IllegalArgumentException (可選)如果發(fā)現(xiàn)比較器違反了比較器合同

binarySearch

public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)

使用二分搜索算法在指定列表中搜索指定對(duì)象。 在進(jìn)行此調(diào)用之前,必須根據(jù)其元素的 Comparable 對(duì)列表進(jìn)行升序排序(如通過(guò) sort(java.util.List) 方法)。 如果未排序,則結(jié)果未定義。 如果列表包含多個(gè)等于指定對(duì)象的元素,則無(wú)法保證會(huì)找到哪一個(gè)。

此方法在 log(n) 時(shí)間內(nèi)針對(duì)“隨機(jī)訪問(wèn)”列表(提供接近恒定時(shí)間的位置訪問(wèn))運(yùn)行。 如果指定的列表沒(méi)有實(shí)現(xiàn) RandomAccess 接口并且很大,則此方法將執(zhí)行基于迭代器的二進(jìn)制搜索,執(zhí)行 O(n) 鏈接遍歷和 O(log n) 元素比較。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 列表中對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
list 要搜索的列表。
key 要搜索的鍵。

返回:

搜索關(guān)鍵字的索引,如果它包含在列表中; 否則,(-(插入點(diǎn))- 1)。 插入點(diǎn)定義為將鍵插入列表的點(diǎn):第一個(gè)元素的索引大于鍵,如果列表中的所有元素都小于指定的鍵,則為 list.size()。 請(qǐng)注意,這保證了當(dāng)且僅當(dāng)找到鍵時(shí),返回值將 >= 0。

Throws:

Throw名稱 Throw描述
ClassCastException 如果列表包含不可相互比較的元素(例如,字符串和整數(shù)),或者搜索鍵與列表的元素不可相互比較。

binarySearch

public static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)

使用二分搜索算法在指定列表中搜索指定對(duì)象。 在進(jìn)行此調(diào)用之前,必須根據(jù)指定的比較器(如通過(guò) sort(List, Comparator) 方法)對(duì)列表進(jìn)行升序排序。 如果未排序,則結(jié)果未定義。 如果列表包含多個(gè)等于指定對(duì)象的元素,則無(wú)法保證會(huì)找到哪一個(gè)。

此方法在 log(n) 時(shí)間內(nèi)針對(duì)“隨機(jī)訪問(wèn)”列表(提供接近恒定時(shí)間的位置訪問(wèn))運(yùn)行。 如果指定的列表沒(méi)有實(shí)現(xiàn) RandomAccess 接口并且很大,則此方法將執(zhí)行基于迭代器的二進(jìn)制搜索,執(zhí)行 O(n) 鏈接遍歷和 O(log n) 元素比較。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 列表中對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
list 要搜索的列表。
key 要搜索的鍵。
c 排序列表的比較器。 空值表示應(yīng)該使用元素的 Comparable。

返回:

搜索關(guān)鍵字的索引,如果它包含在列表中; 否則,(-(插入點(diǎn))- 1)。 插入點(diǎn)定義為將鍵插入列表的點(diǎn):第一個(gè)元素的索引大于鍵,如果列表中的所有元素都小于指定的鍵,則為 list.size()。 請(qǐng)注意,這保證了當(dāng)且僅當(dāng)找到鍵時(shí),返回值將 >= 0。

Throws:

Throw名稱 Throw描述
ClassCastException 如果列表包含使用指定比較器不能相互比較的元素,或者搜索鍵與使用此比較器的列表元素不能相互比較。

reverse

public static void reverse(List<?> list)

反轉(zhuǎn)指定列表中元素的順序。

此方法以線性時(shí)間運(yùn)行。

參數(shù):

參數(shù)名稱 參數(shù)描述
list 要反轉(zhuǎn)其元素的列表。

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果指定的列表或其列表迭代器不支持設(shè)置操作。

shuffle

public static void shuffle(List<?> list)

使用默認(rèn)隨機(jī)源隨機(jī)排列指定列表。所有排列都以大致相等的可能性發(fā)生。

在前面的描述中使用了“大約”對(duì)沖,因?yàn)槟J(rèn)隨機(jī)源只是大約獨(dú)立選擇位的無(wú)偏源。如果它是隨機(jī)選擇的比特的完美來(lái)源,那么該算法將選擇具有完美一致性的排列。

此實(shí)現(xiàn)從最后一個(gè)元素到第二個(gè)元素向后遍歷列表,反復(fù)將隨機(jī)選擇的元素交換到“當(dāng)前位置”。元素是從列表中從第一個(gè)元素到當(dāng)前位置(含)的部分中隨機(jī)選擇的。

此方法以線性時(shí)間運(yùn)行。如果指定列表沒(méi)有實(shí)現(xiàn) RandomAccess 接口并且很大,則此實(shí)現(xiàn)在打亂之前將指定列表轉(zhuǎn)儲(chǔ)到數(shù)組中,并將打亂后的數(shù)組轉(zhuǎn)儲(chǔ)回列表中。這避免了因?qū)ⅰ绊樞蛟L問(wèn)”列表改組而導(dǎo)致的二次行為。

參數(shù):

參數(shù)名稱 參數(shù)描述
list 要洗牌的列表。

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果指定的列表或其列表迭代器不支持設(shè)置操作。

shuffle

public static void shuffle(List<?> list, Random rnd)

使用指定的隨機(jī)源隨機(jī)排列指定的列表。 假設(shè)隨機(jī)性的來(lái)源是公平的,所有排列都以相同的可能性發(fā)生。

此實(shí)現(xiàn)從最后一個(gè)元素到第二個(gè)元素向后遍歷列表,反復(fù)將隨機(jī)選擇的元素交換到“當(dāng)前位置”。 元素是從列表中從第一個(gè)元素到當(dāng)前位置(含)的部分中隨機(jī)選擇的。

此方法以線性時(shí)間運(yùn)行。 如果指定列表沒(méi)有實(shí)現(xiàn) RandomAccess 接口并且很大,則此實(shí)現(xiàn)在打亂之前將指定列表轉(zhuǎn)儲(chǔ)到數(shù)組中,并將打亂后的數(shù)組轉(zhuǎn)儲(chǔ)回列表中。 這避免了因?qū)ⅰ绊樞蛟L問(wèn)”列表改組而導(dǎo)致的二次行為。

參數(shù):

參數(shù)名稱 參數(shù)描述
list 要洗牌的列表。
rnd 用于隨機(jī)排列列表的隨機(jī)源。

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果指定的列表或其列表迭代器不支持設(shè)置操作。

swap

public static void swap(List<?> list, int i, int j)

交換指定列表中指定位置的元素。 (如果指定的位置相等,則調(diào)用此方法會(huì)使列表保持不變。)

參數(shù):

參數(shù)名稱 參數(shù)描述
list 交換元素的列表。
i 要交換的一個(gè)元素的索引。
j 要交換的另一個(gè)元素的索引。

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException 如果 i 或 j 超出范圍 (i < 0 || i >= list.size() || j < 0 || j >= list.size())。

fill

public static <T> void fill(List<? super T> list, T obj)

用指定元素替換指定列表的所有元素。

此方法以線性時(shí)間運(yùn)行。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 列表中對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
list 要填充指定元素的列表。
obj 用于填充指定列表的元素。

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果指定的列表或其列表迭代器不支持設(shè)置操作。

copy

public static <T> void copy(List<? super T> dest, List<? extends T> src)

將一個(gè)列表中的所有元素復(fù)制到另一個(gè)列表中。 操作后,目標(biāo)列表中每個(gè)復(fù)制元素的索引將與其在源列表中的索引相同。 目標(biāo)列表必須至少與源列表一樣長(zhǎng)。 如果它更長(zhǎng),則目標(biāo)列表中的其余元素不受影響。

此方法以線性時(shí)間運(yùn)行。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 列表中對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
dest 目的地列表。
src 源列表。

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException 如果目標(biāo)列表太小而無(wú)法包含整個(gè)源列表。
UnsupportedOperationException 如果目標(biāo)列表的列表迭代器不支持設(shè)置操作。

min

public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)

根據(jù)元素的自然順序返回給定集合的最小元素。 集合中的所有元素都必須實(shí)現(xiàn) Comparable 接口。 此外,集合中的所有元素必須相互可比較(即,e1.compareTo(e2) 不得為集合中的任何元素 e1 和 e2 拋出 ClassCastException)。

此方法迭代整個(gè)集合,因此它需要與集合大小成正比的時(shí)間。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 集合中對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
coll 要確定其最小元素的集合。

返回:

給定集合的最小元素,根據(jù)其元素的自然順序。

Throws:

Throw名稱 Throw描述
ClassCastException 如果集合包含不可相互比較的元素(例如,字符串和整數(shù))。
NoSuchElementException 如果集合為空。

min

public static <T> T min(Collection<? extends T> coll, Comparator<? super T> comp)

根據(jù)指定比較器誘導(dǎo)的順序返回給定集合的最小元素。 集合中的所有元素必須通過(guò)指定的比較器相互比較(即,comp.compare(e1, e2) 不得為集合中的任何元素 e1 和 e2 拋出 ClassCastException)。

此方法迭代整個(gè)集合,因此它需要與集合大小成正比的時(shí)間。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 集合中對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
coll 要確定其最小元素的集合。
comp 用于確定最小元素的比較器。 空值表示應(yīng)使用元素的自然順序。

返回:

根據(jù)指定的比較器,給定集合的最小元素。

Throws:

Throw名稱 Throw描述
ClassCastException 如果集合包含使用指定比較器不能相互比較的元素。
NoSuchElementException 如果集合為空。

max

public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)

根據(jù)元素的自然順序返回給定集合的最大元素。 集合中的所有元素都必須實(shí)現(xiàn) Comparable 接口。 此外,集合中的所有元素必須相互可比較(即,e1.compareTo(e2) 不得為集合中的任何元素 e1 和 e2 拋出 ClassCastException)。

此方法迭代整個(gè)集合,因此它需要與集合大小成正比的時(shí)間。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 集合中對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
coll 要確定其最大元素的集合。

返回:

給定集合的最大元素,根據(jù)其元素的自然順序。

Throws:

Throw名稱 Throw描述
ClassCastException 如果集合包含不可相互比較的元素(例如,字符串和整數(shù))。
NoSuchElementException 如果集合為空。

max

public static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp)

根據(jù)指定比較器誘導(dǎo)的順序返回給定集合的最大元素。 集合中的所有元素必須通過(guò)指定的比較器相互比較(即,comp.compare(e1, e2) 不得為集合中的任何元素 e1 和 e2 拋出 ClassCastException)。

此方法迭代整個(gè)集合,因此它需要與集合大小成正比的時(shí)間。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 集合中對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
coll 要確定其最大元素的集合。
comp 用于確定最大元素的比較器。 空值表示應(yīng)使用元素的自然順序。

返回:

根據(jù)指定的比較器,給定集合的最大元素。

Throws:

Throw名稱 Throw描述
ClassCastException 如果集合包含使用指定比較器不能相互比較的元素。
NoSuchElementException 如果集合為空。

rotate

public static void rotate(List<?> list, int distance)

將指定列表中的元素旋轉(zhuǎn)指定距離。 調(diào)用此方法后,索引 i 處的元素將是先前位于索引 (i - 距離) mod list.size() 處的元素,對(duì)于 i 的所有值介于 0 和 list.size()-1 之間,包括 0 和 list.size()-1。 (此方法對(duì)列表的大小沒(méi)有影響。)

例如,假設(shè)列表包含 [t, a, n, k, s]。 調(diào)用 Collections.rotate(list, 1)(或 Collections.rotate(list, -4))后,列表將包含 [s, t, a, n, k]。

請(qǐng)注意,此方法可以有效地應(yīng)用于子列表,以在列表中移動(dòng)一個(gè)或多個(gè)元素,同時(shí)保留剩余元素的順序。 例如,以下習(xí)慣用法將索引 j 處的元素向前移動(dòng)到位置 k(必須大于或等于 j):

     Collections.rotate(list.subList(j, k+1), -1); 

為了具體說(shuō)明,假設(shè)列表包含 [a, b, c, d, e]。 要將索引 1 (b) 處的元素向前移動(dòng)兩個(gè)位置,請(qǐng)執(zhí)行以下調(diào)用:

     Collections.rotate(l.subList(1, 4), -1); 

結(jié)果列表是 [a, c, d, b, e]。

要向前移動(dòng)多個(gè)元素,請(qǐng)?jiān)黾有D(zhuǎn)距離的絕對(duì)值。要向后移動(dòng)元素,請(qǐng)使用正偏移距離。

如果指定的列表很小或?qū)崿F(xiàn)了 RandomAccess 接口,則此實(shí)現(xiàn)將第一個(gè)元素交換到它應(yīng)該去的位置,然后重復(fù)地將被替換的元素交換到它應(yīng)該去的位置,直到一個(gè)被替換的元素被交換到第一個(gè)元素。如有必要,對(duì)第二個(gè)和后續(xù)元素重復(fù)該過(guò)程,直到旋轉(zhuǎn)完成。如果指定的列表很大并且沒(méi)有實(shí)現(xiàn) RandomAccess 接口,則此實(shí)現(xiàn)將列表分成兩個(gè)圍繞 index -distance mod 大小的子列表視圖。然后在每個(gè)子列表視圖上調(diào)用 reverse(java.util.List) 方法,最后在整個(gè)列表上調(diào)用它。

參數(shù):

參數(shù)名稱 參數(shù)描述
list 要輪換的列表。
distance 旋轉(zhuǎn)列表的距離。 這個(gè)值沒(méi)有限制; 它可能為零、負(fù)數(shù)或大于 list.size()。

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果指定的列表或其列表迭代器不支持設(shè)置操作。

replaceAll

public static <T> boolean replaceAll(List<T> list, T oldVal, T newVal)

將列表中一個(gè)指定值的所有出現(xiàn)替換為另一個(gè)。 更正式地說(shuō),用 newVal 替換列表中的每個(gè)元素 e,使得 (oldVal==null ? e==null : oldVal.equals(e))。 (此方法對(duì)列表的大小沒(méi)有影響。)

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 列表中對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
list 要發(fā)生替換的列表。
oldVal 要替換的舊值。
newVal oldVal 將被替換的新值。

返回:

如果 list 包含一個(gè)或多個(gè)元素 e 滿足 (oldVal==null ? e==null : oldVal.equals(e)),則為 true。

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果指定的列表或其列表迭代器不支持設(shè)置操作。

indexOfSubList

public static int indexOfSubList(List<?> source, List<?> target)

返回指定源列表中指定目標(biāo)列表第一次出現(xiàn)的起始位置,如果沒(méi)有出現(xiàn),則返回 -1。 更正式地說(shuō),返回滿足 source.subList(i, i+target.size()).equals(target) 的最低索引 i,如果沒(méi)有這樣的索引,則返回 -1。 (如果 target.size() > source.size() 則返回 -1)

此實(shí)現(xiàn)使用掃描源列表的“brute force”技術(shù),依次在每個(gè)位置尋找與目標(biāo)的匹配。

參數(shù):

參數(shù)名稱 參數(shù)描述
source 在其中搜索第一次出現(xiàn)的目標(biāo)的列表。
target 要搜索的列表作為源的子列表。

返回:

指定目標(biāo)列表在指定源列表中第一次出現(xiàn)的起始位置,如果沒(méi)有出現(xiàn),則為 -1。

lastIndexOfSubList

public static int lastIndexOfSubList(List<?> source, List<?> target)

返回指定目標(biāo)列表在指定源列表中最后一次出現(xiàn)的起始位置,如果沒(méi)有出現(xiàn),則返回 -1。 更正式地說(shuō),返回最高索引 i 使得 source.subList(i, i+target.size()).equals(target),如果沒(méi)有這樣的索引,則返回 -1。 (如果 target.size() > source.size() 則返回 -1)

該實(shí)現(xiàn)使用“brute force”技術(shù)迭代源列表,依次在每個(gè)位置尋找與目標(biāo)的匹配。

參數(shù):

參數(shù)名稱 參數(shù)描述
source 要在其中搜索最后一次出現(xiàn)的目標(biāo)的列表。
target 要搜索的列表作為源的子列表。

返回:

指定源列表中指定目標(biāo)列表的最后一次出現(xiàn)的起始位置,如果沒(méi)有這樣的出現(xiàn),則為 -1。

unmodifiableCollection

public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c)

返回指定集合的不可修改視圖。 此方法允許模塊為用戶提供對(duì)內(nèi)部集合的“只讀”訪問(wèn)權(quán)限。 對(duì)返回集合的查詢操作“通讀”到指定集合,并嘗試修改返回的集合,無(wú)論是直接還是通過(guò)其迭代器,都會(huì)導(dǎo)致 UnsupportedOperationException。

返回的集合不會(huì)將 hashCode 和 equals 操作傳遞給支持集合,而是依賴于 Object 的 equals 和 hashCode 方法。 在支持集合是集合或列表的情況下,這對(duì)于保留這些操作的合同是必要的。

如果指定的集合是可序列化的,則返回的集合將是可序列化的。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 集合中對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
c 要為其返回不可修改視圖的集合。

返回:

指定集合的不可修改視圖。

unmodifiableSet

public static <T> Set<T> unmodifiableSet(Set<? extends T> s)

返回指定集合的不可修改視圖。 此方法允許模塊為用戶提供對(duì)內(nèi)部集的“只讀”訪問(wèn)權(quán)限。 對(duì)返回集“通讀”到指定集的查詢操作,并嘗試修改返回集,無(wú)論是直接還是通過(guò)其迭代器,都會(huì)導(dǎo)致 UnsupportedOperationException。

如果指定的集合是可序列化的,則返回的集合將是可序列化的。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 集合中對(duì)象的類別

參數(shù):

參數(shù)名稱 參數(shù)描述
s 要為其返回不可修改視圖的集合。

返回:

指定集合的不可修改視圖。

unmodifiableSortedSet

public static <T> SortedSet<T> unmodifiableSortedSet(SortedSet<T> s)

返回指定排序集的不可修改視圖。 此方法允許模塊為用戶提供對(duì)內(nèi)部排序集的“只讀”訪問(wèn)權(quán)限。 對(duì)返回的排序集的查詢操作“通讀”到指定的排序集。 嘗試修改返回的排序集,無(wú)論是直接的、通過(guò)它的迭代器,還是通過(guò)它的 subSet、headSet 或 tailSet 視圖,都會(huì)導(dǎo)致 UnsupportedOperationException。

如果指定的排序集是可序列化的,則返回的排序集將是可序列化的。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 集合中對(duì)象的類別

參數(shù):

參數(shù)名稱 參數(shù)描述
s 要為其返回不可修改視圖的排序集。

返回:

指定排序集的不可修改視圖。

unmodifiableNavigableSet

public static <T> NavigableSet<T> unmodifiableNavigableSet(NavigableSet<T> s)

返回指定導(dǎo)航集的不可修改視圖。 此方法允許模塊為用戶提供對(duì)內(nèi)部可導(dǎo)航集的“只讀”訪問(wèn)權(quán)限。 對(duì)返回的導(dǎo)航集的查詢操作“通讀”到指定的導(dǎo)航集。 嘗試修改返回的可導(dǎo)航集,無(wú)論是直接、通過(guò)其迭代器,還是通過(guò)其子集、頭集或尾集視圖,都會(huì)導(dǎo)致 UnsupportedOperationException。

如果指定的導(dǎo)航集是可序列化的,則返回的導(dǎo)航集將是可序列化的。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 集合中對(duì)象的類別

參數(shù):

參數(shù)名稱 參數(shù)描述
s 要為其返回不可修改視圖的可導(dǎo)航集

返回:

指定導(dǎo)航集的不可修改視圖

unmodifiableList

public static <T> List<T> unmodifiableList(List<? extends T> list)

返回指定列表的不可修改視圖。 此方法允許模塊為用戶提供對(duì)內(nèi)部列表的“只讀”訪問(wèn)權(quán)限。 對(duì)返回列表的查詢操作“通讀”到指定列表,并嘗試修改返回的列表,無(wú)論是直接還是通過(guò)其迭代器,都會(huì)導(dǎo)致 UnsupportedOperationException。

如果指定的列表是可序列化的,則返回的列表將是可序列化的。 同樣,如果指定的列表執(zhí)行,則返回的列表將實(shí)現(xiàn) RandomAccess。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 列表中對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
list 要為其返回不可修改視圖的列表。

返回:

指定列表的不可修改視圖。

unmodifiableMap

public static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m)

返回指定地圖的不可修改視圖。 此方法允許模塊為用戶提供對(duì)內(nèi)部地圖的“只讀”訪問(wèn)權(quán)限。 對(duì)返回的映射“通讀”到指定映射的查詢操作,并嘗試修改返回的映射,無(wú)論是直接還是通過(guò)其集合視圖,都會(huì)導(dǎo)致 UnsupportedOperationException。

如果指定的映射是可序列化的,則返回的映射將是可序列化的。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
K 映射鍵的類
V 地圖值的類別

參數(shù):

參數(shù)名稱 參數(shù)描述
m 要為其返回不可修改視圖的map。

返回:

指定map的不可修改視圖。

unmodifiableSortedMap

public static <K,V> SortedMap<K,V> unmodifiableSortedMap(SortedMap<K,? extends V> m)

返回指定排序地圖的不可修改視圖。 此方法允許模塊為用戶提供對(duì)內(nèi)部排序地圖的“只讀”訪問(wèn)權(quán)限。 對(duì)返回的有序映射的查詢操作“通讀”到指定的有序映射。 嘗試修改返回的排序地圖,無(wú)論是直接的、通過(guò)它的集合視圖,還是通過(guò)它的 subMap、headMap 或 tailMap 視圖,都會(huì)導(dǎo)致 UnsupportedOperationException。

如果指定的排序映射是可序列化的,則返回的排序映射將是可序列化的。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
K 映射鍵的類
V map值的類別

參數(shù):

參數(shù)名稱 參數(shù)描述
m 要為其返回不可修改視圖的排序映射。

返回:

指定排序映射的不可修改視圖。

unmodifiableNavigableMap

public static <K,V> NavigableMap<K,V> unmodifiableNavigableMap(NavigableMap<K,? extends V> m)

返回指定導(dǎo)航地圖的不可修改視圖。 此方法允許模塊為用戶提供對(duì)內(nèi)部可導(dǎo)航地圖的“只讀”訪問(wèn)權(quán)限。 對(duì)返回的導(dǎo)航地圖的查詢操作“通讀”到指定的導(dǎo)航地圖。 嘗試修改返回的可導(dǎo)航地圖,無(wú)論是直接通過(guò)其集合視圖,還是通過(guò)其 subMap、headMap 或 tailMap 視圖,都會(huì)導(dǎo)致 UnsupportedOperationException。

如果指定的導(dǎo)航地圖是可序列化的,則返回的導(dǎo)航地圖將是可序列化的。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
K 映射鍵的類
V map值的類別

參數(shù):

參數(shù)名稱 參數(shù)描述
m 要為其返回不可修改視圖的可導(dǎo)航map

返回:

指定導(dǎo)航map的不可修改視圖

synchronizedCollection

public static <T> Collection<T> synchronizedCollection(Collection<T> c)

返回由指定集合支持的同步(線程安全)集合。 為了保證串行訪問(wèn),對(duì)后備集合的所有訪問(wèn)都是通過(guò)返回的集合完成的,這一點(diǎn)至關(guān)重要。

當(dāng)通過(guò) Iterator、Spliterator 或 Stream 遍歷返回的集合時(shí),用戶必須手動(dòng)同步它:

  Collection c = Collections.synchronizedCollection(myCollection);
     ...
  synchronized (c) {
      Iterator i = c.iterator(); // Must be in the synchronized block
      while (i.hasNext())
         foo(i.next());
  }

不遵循此建議可能會(huì)導(dǎo)致不確定的行為。

返回的集合不會(huì)將 hashCode 和 equals 操作傳遞給支持集合,而是依賴于 Object 的 equals 和 hashCode 方法。 在支持集合是集合或列表的情況下,這對(duì)于保留這些操作的合同是必要的。

如果指定的集合是可序列化的,則返回的集合將是可序列化的。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 集合中對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
c 要“wrapped”在同步集合中的集合。

返回:

指定集合的同步視圖。

synchronizedSet

public static <T> Set<T> synchronizedSet(Set<T> s)

返回由指定集支持的同步(線程安全)集。 為了保證串行訪問(wèn),對(duì)支持集的所有訪問(wèn)都是通過(guò)返回集完成的,這一點(diǎn)至關(guān)重要。

當(dāng)?shù)鼤r(shí),用戶必須在返回的集合上手動(dòng)同步:

  Set s = Collections.synchronizedSet(new HashSet());
      ...
  synchronized (s) {
      Iterator i = s.iterator(); // Must be in the synchronized block
      while (i.hasNext())
          foo(i.next());
  }

不遵循此建議可能會(huì)導(dǎo)致不確定的行為。

如果指定的集合是可序列化的,則返回的集合將是可序列化的。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 集合中對(duì)象的類別

參數(shù):

參數(shù)名稱 參數(shù)描述
s 要“wrapped”在同步集中的集合。

返回:

指定集合的同步視圖。

synchronizedSortedSet

public static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s)

返回由指定排序集支持的同步(線程安全)排序集。 為了保證串行訪問(wèn),對(duì)后備排序集的所有訪問(wèn)都是通過(guò)返回的排序集(或其視圖)完成的,這一點(diǎn)至關(guān)重要。

當(dāng)?shù)祷氐呐判蚣蚱淙魏巫蛹㈩^集或尾集視圖時(shí),用戶必須手動(dòng)同步返回的排序集。

  SortedSet s = Collections.synchronizedSortedSet(new TreeSet());
      ...
  synchronized (s) {
      Iterator i = s.iterator(); // Must be in the synchronized block
      while (i.hasNext())
          foo(i.next());
  }

或者:

  SortedSet s = Collections.synchronizedSortedSet(new TreeSet());
  SortedSet s2 = s.headSet(foo);
      ...
  synchronized (s) {  // Note: s, not s2!!!
      Iterator i = s2.iterator(); // Must be in the synchronized block
      while (i.hasNext())
          foo(i.next());
  }

不遵循此建議可能會(huì)導(dǎo)致不確定的行為。

如果指定的排序集是可序列化的,則返回的排序集將是可序列化的。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 集合中對(duì)象的類別

參數(shù):

參數(shù)名稱 參數(shù)描述
s 將排序集“wrapped”在同步排序集中。

返回:

指定排序集的同步視圖。

synchronizedNavigableSet

public static <T> NavigableSet<T> synchronizedNavigableSet(NavigableSet<T> s)

返回由指定導(dǎo)航集支持的同步(線程安全)導(dǎo)航集。 為了保證串行訪問(wèn),對(duì)支持導(dǎo)航集的所有訪問(wèn)都是通過(guò)返回的導(dǎo)航集(或其視圖)完成的,這一點(diǎn)至關(guān)重要。

當(dāng)?shù)祷氐目蓪?dǎo)航集或其任何子集、頭集或尾集視圖時(shí),用戶必須手動(dòng)同步返回的可導(dǎo)航集。

  NavigableSet s = Collections.synchronizedNavigableSet(new TreeSet());
      ...
  synchronized (s) {
      Iterator i = s.iterator(); // Must be in the synchronized block
      while (i.hasNext())
          foo(i.next());
  }

或者:

  NavigableSet s = Collections.synchronizedNavigableSet(new TreeSet());
  NavigableSet s2 = s.headSet(foo, true);
      ...
  synchronized (s) {  // Note: s, not s2!!!
      Iterator i = s2.iterator(); // Must be in the synchronized block
      while (i.hasNext())
          foo(i.next());
  }

不遵循此建議可能會(huì)導(dǎo)致不確定的行為。

如果指定的導(dǎo)航集是可序列化的,則返回的導(dǎo)航集將是可序列化的。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 集合中對(duì)象的類別

參數(shù):

參數(shù)名稱 參數(shù)描述
s 將可導(dǎo)航集“wrapped”在同步可導(dǎo)航集中

返回:

指定導(dǎo)航集的同步視圖

synchronizedList

public static <T> List<T> synchronizedList(List<T> list)

返回由指定列表支持的同步(線程安全)列表。 為了保證串行訪問(wèn),對(duì)后備列表的所有訪問(wèn)都通過(guò)返回的列表完成是至關(guān)重要的。

用戶在迭代返回的列表時(shí)必須手動(dòng)同步它:

  List list = Collections.synchronizedList(new ArrayList());
      ...
  synchronized (list) {
      Iterator i = list.iterator(); // Must be in synchronized block
      while (i.hasNext())
          foo(i.next());
  }

不遵循此建議可能會(huì)導(dǎo)致不確定的行為。

如果指定的列表是可序列化的,則返回的列表將是可序列化的。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 列表中對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
list 要“wrapped”在同步列表中的列表。

返回:

指定列表的同步視圖。

synchronizedMap

public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m)

返回由指定映射支持的同步(線程安全)映射。 為了保證串行訪問(wèn),對(duì)支持映射的所有訪問(wèn)都是通過(guò)返回的映射完成的,這一點(diǎn)至關(guān)重要。

當(dāng)?shù)淙魏渭弦晥D時(shí),用戶必須在返回的地圖上手動(dòng)同步:

  Map m = Collections.synchronizedMap(new HashMap());
      ...
  Set s = m.keySet();  // Needn't be in synchronized block
      ...
  synchronized (m) {  // Synchronizing on m, not s!
      Iterator i = s.iterator(); // Must be in synchronized block
      while (i.hasNext())
          foo(i.next());
  }

不遵循此建議可能會(huì)導(dǎo)致不確定的行為。

如果指定的映射是可序列化的,則返回的映射將是可序列化的。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
K 映射鍵的類
V 地圖值的類別

參數(shù):

參數(shù)名稱 參數(shù)描述
m 要“wrapped”在同步map中的map。

Returns:

a synchronized view of the specified map.

synchronizedSortedMap

public static <K,V> SortedMap<K,V> synchronizedSortedMap(SortedMap<K,V> m)

返回由指定排序映射支持的同步(線程安全)排序映射。 為了保證串行訪問(wèn),對(duì)后備排序映射的所有訪問(wèn)都是通過(guò)返回的排序映射(或其視圖)完成的,這一點(diǎn)至關(guān)重要。

當(dāng)?shù)淙魏渭弦晥D或其任何 subMap、headMap 或 tailMap 視圖的集合視圖時(shí),用戶必須在返回的排序地圖上手動(dòng)同步。

  SortedMap m = Collections.synchronizedSortedMap(new TreeMap());
      ...
  Set s = m.keySet();  // Needn't be in synchronized block
      ...
  synchronized (m) {  // Synchronizing on m, not s!
      Iterator i = s.iterator(); // Must be in synchronized block
      while (i.hasNext())
          foo(i.next());
  } 

或者:

  SortedMap m = Collections.synchronizedSortedMap(new TreeMap());
  SortedMap m2 = m.subMap(foo, bar);
      ...
  Set s2 = m2.keySet();  // Needn't be in synchronized block
      ...
  synchronized (m) {  // Synchronizing on m, not m2 or s2!
      Iterator i = s.iterator(); // Must be in synchronized block
      while (i.hasNext())
          foo(i.next());
  }

不遵循此建議可能會(huì)導(dǎo)致不確定的行為。

如果指定的排序映射是可序列化的,則返回的排序映射將是可序列化的。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
K 映射鍵的類
V map值的類別

參數(shù):

參數(shù)名稱 參數(shù)描述
m 要“wrapped”在同步排序映射中的排序映射。

返回:

指定排序map的同步視圖。

synchronizedNavigableMap

public static <K,V> NavigableMap<K,V> synchronizedNavigableMap(NavigableMap<K,V> m)

返回由指定可導(dǎo)航地圖支持的同步(線程安全)可導(dǎo)航地圖。 為了保證串行訪問(wèn),對(duì)支持導(dǎo)航地圖的所有訪問(wèn)都是通過(guò)返回的導(dǎo)航地圖(或其視圖)完成的,這一點(diǎn)至關(guān)重要。

當(dāng)?shù)淙魏渭弦晥D或其任何 subMap、headMap 或 tailMap 視圖的集合視圖時(shí),用戶必須在返回的可導(dǎo)航地圖上手動(dòng)同步。

  NavigableMap m = Collections.synchronizedNavigableMap(new TreeMap());
      ...
  Set s = m.keySet();  // Needn't be in synchronized block
      ...
  synchronized (m) {  // Synchronizing on m, not s!
      Iterator i = s.iterator(); // Must be in synchronized block
      while (i.hasNext())
          foo(i.next());
  }

或者:

  NavigableMap m = Collections.synchronizedNavigableMap(new TreeMap());
  NavigableMap m2 = m.subMap(foo, true, bar, false);
      ...
  Set s2 = m2.keySet();  // Needn't be in synchronized block
      ...
  synchronized (m) {  // Synchronizing on m, not m2 or s2!
      Iterator i = s.iterator(); // Must be in synchronized block
      while (i.hasNext())
          foo(i.next());
  }

不遵循此建議可能會(huì)導(dǎo)致不確定的行為。

如果指定的導(dǎo)航地圖是可序列化的,則返回的導(dǎo)航地圖將是可序列化的。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
K 映射鍵的類
V 地圖值的類別

參數(shù):

參數(shù)名稱 參數(shù)描述
m 在同步的可導(dǎo)航map中“包裝”的可導(dǎo)航map

返回:

指定導(dǎo)航map的同步視圖。

checkedCollection

public static <E> Collection<E> checkedCollection(Collection<E> c, Class<E> type)

返回指定集合的動(dòng)態(tài)類型安全視圖。任何插入錯(cuò)誤類型元素的嘗試都將立即導(dǎo)致 ClassCastException。假設(shè)在生成動(dòng)態(tài)類型安全視圖之前,集合不包含類型錯(cuò)誤的元素,并且所有后續(xù)對(duì)集合的訪問(wèn)都通過(guò)視圖進(jìn)行,則可以保證集合不會(huì)包含類型錯(cuò)誤的元素。

該語(yǔ)言中的泛型機(jī)制提供了編譯時(shí)(靜態(tài))類型檢查,但可以通過(guò)未經(jīng)檢查的強(qiáng)制轉(zhuǎn)換來(lái)破壞這種機(jī)制。通常這不是問(wèn)題,因?yàn)榫幾g器會(huì)對(duì)所有此類未經(jīng)檢查的操作發(fā)出警告。然而,有時(shí)僅靜態(tài)類型檢查是不夠的。例如,假設(shè)一個(gè)集合被傳遞給第三方庫(kù),并且?guī)齑a必須不通過(guò)插入錯(cuò)誤類型的元素來(lái)破壞集合。

動(dòng)態(tài)類型安全視圖的另一個(gè)用途是調(diào)試。假設(shè)程序因 ClassCastException 而失敗,表明將錯(cuò)誤類型的元素放入?yún)?shù)化集合中。不幸的是,在插入錯(cuò)誤元素后的任何時(shí)候都可能發(fā)生異常,因此它通常很少或根本沒(méi)有提供有關(guān)問(wèn)題真正來(lái)源的信息。如果問(wèn)題是可重現(xiàn)的,則可以通過(guò)臨時(shí)修改程序以使用動(dòng)態(tài)類型安全視圖包裝集合來(lái)快速確定其來(lái)源。例如,這個(gè)聲明:

      Collection<String> c = new HashSet<>(); 

可以暫時(shí)用這個(gè)代替:

      Collection<String> c = Collections.checkedCollection(
         new HashSet<>(), String.class);

再次運(yùn)行程序?qū)?dǎo)致它在將錯(cuò)誤類型的元素插入到集合中時(shí)失敗,從而清楚地確定問(wèn)題的根源。 一旦問(wèn)題得到解決,修改后的聲明可能會(huì)恢復(fù)為原始聲明。

返回的集合不會(huì)將 hashCode 和 equals 操作傳遞給支持集合,而是依賴于 Object 的 equals 和 hashCode 方法。 在支持集合是集合或列表的情況下,這對(duì)于保留這些操作的合同是必要的。

如果指定的集合是可序列化的,則返回的集合將是可序列化的。

由于 null 被認(rèn)為是任何引用類型的值,因此返回的集合允許在支持集合時(shí)插入 null 元素。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
E 集合中對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
c 要為其返回動(dòng)態(tài)類型安全視圖的集合
type 允許 c 持有的元素類型

返回:

指定集合的動(dòng)態(tài)類型安全視圖

checkedQueue

public static <E> Queue<E> checkedQueue(Queue<E> queue, Class<E> type)

返回指定隊(duì)列的動(dòng)態(tài)類型安全視圖。 任何插入錯(cuò)誤類型元素的嘗試都將立即導(dǎo)致 ClassCastException。 假設(shè)在生成動(dòng)態(tài)類型安全視圖之前隊(duì)列不包含類型錯(cuò)誤的元素,并且所有后續(xù)對(duì)隊(duì)列的訪問(wèn)都通過(guò)視圖進(jìn)行,則可以保證隊(duì)列不會(huì)包含類型錯(cuò)誤的元素。

可以在 checkedCollection 方法的文檔中找到有關(guān)使用動(dòng)態(tài)類型安全視圖的討論。

如果指定的隊(duì)列是可序列化的,則返回的隊(duì)列將是可序列化的。

由于 null 被認(rèn)為是任何引用類型的值,因此返回的隊(duì)列允許在后備隊(duì)列中插入 null 元素。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
E 隊(duì)列中對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
queue 要為其返回動(dòng)態(tài)類型安全視圖的隊(duì)列
type 隊(duì)列允許持有的元素類型

返回:

指定隊(duì)列的動(dòng)態(tài)類型安全視圖

checkedSet

public static <E> Set<E> checkedSet(Set<E> s, Class<E> type)

返回指定集合的動(dòng)態(tài)類型安全視圖。 任何插入錯(cuò)誤類型元素的嘗試都將立即導(dǎo)致 ClassCastException。 假設(shè)在生成動(dòng)態(tài)類型安全視圖之前,集合不包含錯(cuò)誤類型的元素,并且所有后續(xù)訪問(wèn)該集合都通過(guò)該視圖進(jìn)行,則可以保證該集合不能包含錯(cuò)誤類型的元素。

可以在 checkedCollection 方法的文檔中找到有關(guān)使用動(dòng)態(tài)類型安全視圖的討論。

如果指定的集合是可序列化的,則返回的集合將是可序列化的。

由于 null 被認(rèn)為是任何引用類型的值,因此只要支持集插入,返回的集合就允許插入 null 元素。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
E 集合中對(duì)象的類別

參數(shù):

參數(shù)名稱 參數(shù)描述
s 要為其返回動(dòng)態(tài)類型安全視圖的集合
type s 允許持有的元素類型

返回:

指定集合的動(dòng)態(tài)類型安全視圖

checkedSortedSet

public static <E> SortedSet<E> checkedSortedSet(SortedSet<E> s, Class<E> type)

返回指定排序集的動(dòng)態(tài)類型安全視圖。 任何插入錯(cuò)誤類型元素的嘗試都將立即導(dǎo)致 ClassCastException。 假設(shè)在生成動(dòng)態(tài)類型安全視圖之前,排序集不包含類型錯(cuò)誤的元素,并且所有后續(xù)對(duì)排序集的訪問(wèn)都通過(guò)視圖進(jìn)行,則可以保證排序集不會(huì)包含類型錯(cuò)誤的元素。

可以在 checkedCollection 方法的文檔中找到有關(guān)使用動(dòng)態(tài)類型安全視圖的討論。

如果指定的排序集是可序列化的,則返回的排序集將是可序列化的。

由于 null 被認(rèn)為是任何引用類型的值,因此返回的排序集允許在支持排序集插入時(shí)插入 null 元素。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
E 集合中對(duì)象的類別

參數(shù):

參數(shù)名稱 參數(shù)描述
s 要為其返回動(dòng)態(tài)類型安全視圖的排序集
type s 允許持有的元素類型

返回:

指定排序集的動(dòng)態(tài)類型安全視圖

checkedNavigableSet

public static <E> NavigableSet<E> checkedNavigableSet(NavigableSet<E> s, Class<E> type)

返回指定導(dǎo)航集的動(dòng)態(tài)類型安全視圖。 任何插入錯(cuò)誤類型元素的嘗試都將立即導(dǎo)致 ClassCastException。 假設(shè)在生成動(dòng)態(tài)類型安全視圖之前,可導(dǎo)航集不包含類型錯(cuò)誤的元素,并且所有后續(xù)訪問(wèn)可導(dǎo)航集都通過(guò)視圖進(jìn)行,則可以保證可導(dǎo)航集不能包含錯(cuò)誤類型的元素。

可以在 checkedCollection 方法的文檔中找到有關(guān)使用動(dòng)態(tài)類型安全視圖的討論。

如果指定的導(dǎo)航集是可序列化的,則返回的導(dǎo)航集將是可序列化的。

由于 null 被認(rèn)為是任何引用類型的值,因此返回的可導(dǎo)航集允許在支持排序集插入時(shí)插入 null 元素。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
E 集合中對(duì)象的類別

參數(shù):

參數(shù)名稱 參數(shù)描述
s 要為其返回動(dòng)態(tài)類型安全視圖的可導(dǎo)航集
type s 允許持有的元素類型

返回:

指定可導(dǎo)航集的動(dòng)態(tài)類型安全視圖

checkedList

public static <E> List<E> checkedList(List<E> list, Class<E> type)

返回指定列表的動(dòng)態(tài)類型安全視圖。 任何插入錯(cuò)誤類型元素的嘗試都將立即導(dǎo)致 ClassCastException。 假設(shè)在生成動(dòng)態(tài)類型安全視圖之前列表不包含錯(cuò)誤類型的元素,并且所有后續(xù)訪問(wèn)列表都通過(guò)視圖進(jìn)行,則可以保證列表不能包含錯(cuò)誤類型的元素。

可以在 checkedCollection 方法的文檔中找到有關(guān)使用動(dòng)態(tài)類型安全視圖的討論。

如果指定的列表是可序列化的,則返回的列表將是可序列化的。

由于 null 被認(rèn)為是任何引用類型的值,因此返回的列表允許在后備列表中插入 null 元素。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
E 列表中對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
list 要為其返回動(dòng)態(tài)類型安全視圖的列表
type 列表允許包含的元素類型

返回:

指定列表的動(dòng)態(tài)類型安全視圖

checkedMap

public static <K,V> Map<K,V> checkedMap(Map<K,V> m, Class<K> keyType, Class<V> valueType)

返回指定映射的動(dòng)態(tài)類型安全視圖。任何插入其鍵或值類型錯(cuò)誤的映射的嘗試都將立即導(dǎo)致 ClassCastException。類似地,任何修改當(dāng)前與鍵關(guān)聯(lián)的值的嘗試都將立即導(dǎo)致 ClassCastException,無(wú)論是直接通過(guò)映射本身嘗試修改,還是通過(guò)從映射的 Map#entrySet() 視圖獲得的 Map.Entry 實(shí)例。

假設(shè)在生成動(dòng)態(tài)類型安全視圖之前,映射不包含錯(cuò)誤類型的鍵或值,并且所有后續(xù)對(duì)映射的訪問(wèn)都通過(guò)視圖(或其集合視圖之一)進(jìn)行,則可以保證映射不能包含鍵入錯(cuò)誤的鍵或值。

可以在 checkedCollection 方法的文檔中找到有關(guān)使用動(dòng)態(tài)類型安全視圖的討論。

如果指定的映射是可序列化的,則返回的映射將是可序列化的。

由于 null 被認(rèn)為是任何引用類型的值,因此返回的映射允許在支持映射時(shí)插入空鍵或值。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
K 映射鍵的類
V map值的類別

參數(shù):

參數(shù)名稱 參數(shù)描述
m 要為其返回動(dòng)態(tài)類型安全視圖的映射
keyType 允許 m 持有的密鑰類型
valueType m 被允許持有的值的類型

返回:

指定映射的動(dòng)態(tài)類型安全視圖

checkedSortedMap

public static <K,V> SortedMap<K,V> checkedSortedMap(SortedMap<K,V> m, Class<K> keyType, Class<V> valueType)

返回指定排序映射的動(dòng)態(tài)類型安全視圖。任何插入其鍵或值類型錯(cuò)誤的映射的嘗試都將立即導(dǎo)致 ClassCastException。類似地,任何修改當(dāng)前與鍵關(guān)聯(lián)的值的嘗試都將立即導(dǎo)致 ClassCastException,無(wú)論是直接通過(guò)映射本身嘗試修改,還是通過(guò)從映射的 Map#entrySet() 視圖獲得的 Map.Entry 實(shí)例。

假設(shè)在生成動(dòng)態(tài)類型安全視圖之前,映射不包含錯(cuò)誤類型的鍵或值,并且所有后續(xù)對(duì)映射的訪問(wèn)都通過(guò)視圖(或其集合視圖之一)進(jìn)行,則可以保證映射不能包含鍵入錯(cuò)誤的鍵或值。

可以在 checkedCollection 方法的文檔中找到有關(guān)使用動(dòng)態(tài)類型安全視圖的討論。

如果指定的映射是可序列化的,則返回的映射將是可序列化的。

由于 null 被認(rèn)為是任何引用類型的值,因此返回的映射允許在支持映射時(shí)插入空鍵或值。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
K 映射鍵的類
V map值的類別

參數(shù):

參數(shù)名稱 參數(shù)描述
m 要為其返回動(dòng)態(tài)類型安全視圖的映射
keyType 允許 m 持有的密鑰類型
valueType m 被允許持有的值的類型

返回:

指定映射的動(dòng)態(tài)類型安全視圖

checkedNavigableMap

public static <K,V> NavigableMap<K,V> checkedNavigableMap(NavigableMap<K,V> m, Class<K> keyType, Class<V> valueType)

返回指定可導(dǎo)航地圖的動(dòng)態(tài)類型安全視圖。任何插入其鍵或值類型錯(cuò)誤的映射的嘗試都將立即導(dǎo)致 ClassCastException。類似地,任何修改當(dāng)前與鍵關(guān)聯(lián)的值的嘗試都將立即導(dǎo)致 ClassCastException,無(wú)論是直接通過(guò)映射本身嘗試修改,還是通過(guò)從映射的 Map#entrySet() 視圖獲得的 Map.Entry 實(shí)例。

假設(shè)在生成動(dòng)態(tài)類型安全視圖之前,映射不包含錯(cuò)誤類型的鍵或值,并且所有后續(xù)對(duì)映射的訪問(wèn)都通過(guò)視圖(或其集合視圖之一)進(jìn)行,則可以保證映射不能包含鍵入錯(cuò)誤的鍵或值。

可以在 checkedCollection 方法的文檔中找到有關(guān)使用動(dòng)態(tài)類型安全視圖的討論。

如果指定的映射是可序列化的,則返回的映射將是可序列化的。

由于 null 被認(rèn)為是任何引用類型的值,因此返回的映射允許在支持映射時(shí)插入空鍵或值。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
K map鍵的類型
V map值的類型

參數(shù):

參數(shù)名稱 參數(shù)描述
m 要為其返回動(dòng)態(tài)類型安全視圖的映射
keyType 允許 m 持有的密鑰類型
valueType m 被允許持有的值的類型

返回:

指定映射的動(dòng)態(tài)類型安全視圖

emptyIterator

public static <T> Iterator<T> emptyIterator()

返回一個(gè)沒(méi)有元素的迭代器。 更確切地說(shuō),

  • Iterator#hasNext 總是返回 false。
  • Iterator#next 總是拋出 NoSuchElementException。
  • Iterator#remove 總是拋出 IllegalStateException。

允許但不要求此方法的實(shí)現(xiàn)從多次調(diào)用中返回相同的對(duì)象。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 迭代器中的元素類型(如果有)

返回:

一個(gè)空的迭代器

emptyListIterator

public static <T> ListIterator<T> emptyListIterator()

返回一個(gè)沒(méi)有元素的列表迭代器。 更確切地說(shuō),

  • Iterator#hasNext 和 ListIterator#hasPrevious 總是返回 false。
  • Iterator#next 和 ListIterator#previous 總是拋出 NoSuchElementException。
  • Iterator#remove 和 ListIterator#set 總是拋出 IllegalStateException。
  • ListIterator#add 總是拋出 UnsupportedOperationException。
  • ListIterator#nextIndex 總是返回 0。
  • ListIterator#previousIndex 總是返回 -1。

允許但不要求此方法的實(shí)現(xiàn)從多次調(diào)用中返回相同的對(duì)象。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 迭代器中的元素類型(如果有)

返回:

一個(gè)空列表迭代器

emptyEnumeration

public static <T> Enumeration<T> emptyEnumeration()

返回一個(gè)沒(méi)有元素的枚舉。 更確切地說(shuō),

  • Enumeration#hasMoreElements 總是返回 false。
  • Enumeration#nextElement 總是拋出 NoSuchElementException。

允許但不要求此方法的實(shí)現(xiàn)從多次調(diào)用中返回相同的對(duì)象。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 枚舉中對(duì)象的類

返回:

空枚舉

emptySet

public static final <T> Set<T> emptySet()

返回一個(gè)空集(不可變)。 這個(gè)集合是可序列化的。 與同名字段不同,此方法是參數(shù)化的。

此示例說(shuō)明了獲取空集的類型安全方法:

     Set<String> s = Collections.emptySet(); 

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 集合中對(duì)象的類別

返回:

空集

emptySortedSet

public static <E> SortedSet<E> emptySortedSet()

返回一個(gè)空的排序集(不可變)。 這個(gè)集合是可序列化的。

此示例說(shuō)明了獲取空排序集的類型安全方法:

      SortedSet<String> s = Collections.emptySortedSet(); 

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
E 集合中元素的類型(如果有的話)

返回:

空排序集

emptyNavigableSet

public static <E> NavigableSet<E> emptyNavigableSet()

返回一個(gè)空的可導(dǎo)航集(不可變)。 這個(gè)集合是可序列化的。

此示例說(shuō)明了獲取空可導(dǎo)航集的類型安全方法:

      NavigableSet<String> s = Collections.emptyNavigableSet(); 

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
E 集合中元素的類型(如果有的話)

返回:

空的可導(dǎo)航集

emptyList

public static final <T> List<T> emptyList()

返回一個(gè)空列表(不可變)。 這個(gè)列表是可序列化的。

此示例說(shuō)明了獲取空列表的類型安全方法:

     List<String> s = Collections.emptyList(); 

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 列表中的元素類型(如果有)

返回:

一個(gè)空的不可變列表

emptyMap

public static final <K,V> Map<K,V> emptyMap()

返回一個(gè)空映射(不可變)。 該地圖是可序列化的。

此示例說(shuō)明了獲取空映射的類型安全方法:

     Map<String, Date> s = Collections.emptyMap(); 

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
K 映射鍵的類
V map值的類別

返回:

空map

emptySortedMap

public static final <K,V> SortedMap<K,V> emptySortedMap()

返回一個(gè)空的排序映射(不可變)。 該map是可序列化的。

此示例說(shuō)明了獲取空映射的類型安全方法:

      SortedMap<String, Date> s = Collections.emptySortedMap(); 

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
K 映射鍵的類
V map值的類別

返回:

一個(gè)空的排序map

emptyNavigableMap

public static final <K,V> NavigableMap<K,V> emptyNavigableMap()

返回一個(gè)空的可導(dǎo)航map(不可變)。 該map是可序列化的。

此示例說(shuō)明了獲取空映射的類型安全方法:

      NavigableMap<String, Date> s = Collections.emptyNavigableMap(); 

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
K 映射鍵的類
V map值的類別

返回:

空的可導(dǎo)航map

singleton

public static <T> Set<T> singleton(T o)

返回一個(gè)只包含指定對(duì)象的不可變集合。 返回的集合是可序列化的。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 集合中對(duì)象的類別

參數(shù):

參數(shù)名稱 參數(shù)描述
o 要存儲(chǔ)在返回集中的唯一對(duì)象。

返回:

只包含指定對(duì)象的不可變集合。

singletonList

public static <T> List<T> singletonList(T o)

返回僅包含指定對(duì)象的不可變列表。 返回的列表是可序列化的。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 列表中對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
o 要存儲(chǔ)在返回列表中的唯一對(duì)象。

返回:

只包含指定對(duì)象的不可變列表。

singletonMap

public static <K,V> Map<K,V> singletonMap(K key, V value)

返回一個(gè)不可變映射,僅將指定的鍵映射到指定的值。 返回的map是可序列化的。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
K 映射鍵的類
V map值的類別

參數(shù):

參數(shù)名稱 參數(shù)描述
key 要存儲(chǔ)在返回的映射中的唯一鍵。
value 返回的映射鍵映射到的值。

返回:

只包含指定鍵值映射的不可變映射。

nCopies

public static <T> List<T> nCopies(int n, T o)

返回由指定對(duì)象的 n 個(gè)副本組成的不可變列表。 新分配的數(shù)據(jù)對(duì)象很?。ㄋ瑢?duì)數(shù)據(jù)對(duì)象的單個(gè)引用)。 此方法與 List.addAll 方法結(jié)合使用可增加列表。 返回的列表是可序列化的。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 要復(fù)制的對(duì)象的類和返回列表中的對(duì)象的類。

參數(shù):

參數(shù)名稱 參數(shù)描述
n 返回列表中的元素?cái)?shù)。
o 在返回列表中重復(fù)出現(xiàn)的元素。

返回:

由指定對(duì)象的 n 個(gè)副本組成的不可變列表。

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果 n < 0

reverseOrder

public static <T> Comparator<T> reverseOrder()

返回一個(gè)比較器,它對(duì)實(shí)現(xiàn) Comparable 接口的對(duì)象集合施加自然順序的逆向。 (自然排序是對(duì)象自己的 compareTo 方法強(qiáng)加的排序。)這實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的習(xí)慣用法,用于排序(或維護(hù))以反向自然順序?qū)崿F(xiàn) Comparable 接口的對(duì)象集合(或數(shù)組)。 例如,假設(shè) a 是一個(gè)字符串?dāng)?shù)組。 然后:

          Arrays.sort(a, Collections.reverseOrder()); 

以反向字典(字母)順序?qū)?shù)組進(jìn)行排序。

返回的比較器是可序列化的。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 比較器比較的對(duì)象的類別

返回:

一個(gè)比較器,它對(duì)實(shí)現(xiàn) Comparable 接口的對(duì)象集合施加自然順序的逆向。

reverseOrder

public static <T> Comparator<T> reverseOrder(Comparator<T> cmp)

返回一個(gè)比較器,它強(qiáng)制指定比較器的反向排序。 如果指定的比較器為 null,則此方法等效于 reverseOrder()(換句話說(shuō),它返回一個(gè)比較器,該比較器將自然排序的反向強(qiáng)加于實(shí)現(xiàn) Comparable 接口的對(duì)象集合)。

返回的比較器是可序列化的(假設(shè)指定的比較器也是可序列化的或?yàn)榭眨?/p>

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 比較器比較的對(duì)象的類別

參數(shù):

參數(shù)名稱 參數(shù)描述
cmp 一個(gè)比較器,其排序?qū)⒈环祷氐谋容^器或 null 反轉(zhuǎn)

返回:

一個(gè)比較器,它強(qiáng)制指定比較器的反向排序。

enumeration

public static <T> Enumeration<T> enumeration(Collection<T> c)

返回指定集合的枚舉。 這提供了與需要枚舉作為輸入的舊 API 的互操作性。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 集合中對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
c 要為其返回枚舉的集合。

返回:

對(duì)指定集合的枚舉。

list

public static <T> ArrayList<T> list(Enumeration<T> e)

按枚舉返回的順序返回一個(gè)數(shù)組列表,其中包含指定枚舉返回的元素。 此方法提供了返回枚舉的舊 API 和需要集合的新 API 之間的互操作性。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 枚舉返回的對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
e 為返回的數(shù)組列表提供元素的枚舉

返回:

包含指定枚舉返回的元素的數(shù)組列表。

frequency

public static int frequency(Collection<?> c, Object o)

返回指定集合中等于指定對(duì)象的元素?cái)?shù)。 更正式地說(shuō),返回集合中元素 e 的數(shù)量,使得 (o == null ? e == null : o.equals(e))。

參數(shù):

參數(shù)名稱 參數(shù)描述
c 確定 o 頻率的集合
o 待確定頻率的物體

返回:

c 中的元素個(gè)數(shù)等于 o

Throws:

Throw名稱 Throw描述
NullPointerException 如果 c 為空

disjoint

public static boolean disjoint(Collection<?> c1, Collection<?> c2)

如果兩個(gè)指定的集合沒(méi)有共同的元素,則返回 true。

如果將此方法用于不符合收集總合同的收集,則必須小心。實(shí)現(xiàn)可以選擇迭代任一集合并測(cè)試另一個(gè)集合中的包含(或執(zhí)行任何等效計(jì)算)。如果任一集合使用非標(biāo)準(zhǔn)相等測(cè)試(如排序與 equals 不兼容的 SortedSet 或 IdentityHashMap 的鍵集),則兩個(gè)集合必須使用相同的非標(biāo)準(zhǔn)相等測(cè)試,否則此方法的結(jié)果未定義。

在使用對(duì)它們可能包含的元素有限制的集合時(shí),還必須小心。允許集合實(shí)現(xiàn)為涉及他們認(rèn)為不合格的元素的任何操作拋出異常。為了絕對(duì)安全,指定的集合應(yīng)僅包含對(duì)兩個(gè)集合都符合條件的元素。

請(qǐng)注意,允許在兩個(gè)參數(shù)中傳遞相同的集合,在這種情況下,當(dāng)且僅當(dāng)集合為空時(shí),該方法才會(huì)返回 true。

參數(shù):

參數(shù)名稱 參數(shù)描述
c1 一個(gè)集合
c2 一個(gè)集合

返回:

如果兩個(gè)指定的集合沒(méi)有共同的元素,則為 true。

Throws:

Throw名稱 Throw描述
NullPointerException 如果任一集合為空。
NullPointerException 如果一個(gè)集合包含一個(gè) null 元素并且 null 不是另一個(gè)集合的合格元素。 (可選的)
ClassCastException 如果一個(gè)集合包含的元素的類型不適合另一個(gè)集合。 (可選的)

addAll

@SafeVarargs public static <T> boolean addAll(Collection<? super T> c, T... elements)

將所有指定元素添加到指定集合。 要添加的元素可以單獨(dú)指定,也可以作為數(shù)組指定。 此便捷方法的行為與 c.addAll(Arrays.asList(elements)) 的行為相同,但此方法在大多數(shù)實(shí)現(xiàn)下可能運(yùn)行得更快。

當(dāng)單獨(dú)指定元素時(shí),此方法提供了一種將一些元素添加到現(xiàn)有集合的便捷方法:

     Collections.addAll(flavors, "Peaches 'n Plutonium", "Rocky Racoon"); 

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 要添加的元素和集合的類

參數(shù):

參數(shù)名稱 參數(shù)描述
c 要插入元素的集合
elements 要插入到 c 中的元素

返回:

如果集合因調(diào)用而更改,則為 true

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果 c 不支持添加操作
NullPointerException 如果元素包含一個(gè)或多個(gè)空值并且 c 不允許空元素,或者如果 c 或元素為空
IllegalArgumentException 如果元素中某個(gè)值的某些屬性阻止它被添加到 c

newSetFromMap

public static <E> Set<E> newSetFromMap(MapE,Boolean map)

返回由指定映射支持的集合。 結(jié)果集顯示與支持映射相同的排序、并發(fā)性和性能特征。 本質(zhì)上,這個(gè)工廠方法提供了一個(gè)對(duì)應(yīng)于任何 Map 實(shí)現(xiàn)的 Set 實(shí)現(xiàn)。 沒(méi)有必要在已經(jīng)有對(duì)應(yīng) Set 實(shí)現(xiàn)的 Map 實(shí)現(xiàn)上使用該方法(例如 HashMap 或 TreeMap)。

對(duì)此方法返回的集合的每個(gè)方法調(diào)用都會(huì)導(dǎo)致對(duì)支持映射或其 keySet 視圖的一個(gè)方法調(diào)用,但有一個(gè)例外。 addAll 方法被實(shí)現(xiàn)為支持映射上的一系列 put 調(diào)用。

調(diào)用此方法時(shí)指定的映射必須為空,并且不應(yīng)在此方法返回后直接訪問(wèn)。 如果地圖創(chuàng)建為空,直接傳遞給此方法,并且不保留對(duì)地圖的引用,則可以確保這些條件,如以下代碼片段所示:

    Set<Object> weakHashSet = Collections.newSetFromMap(
        new WeakHashMap<Object, Boolean>());

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
E 映射鍵的類和返回集中的對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
map 支持map

返回:

map支持的集合

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果map不為空

asLifoQueue

public static <T> Queue<T> asLifoQueue(Deque<T> deque)

將 Deque 的視圖返回為后進(jìn)先出 (Lifo) 隊(duì)列。 方法 add 映射到 push,remove 映射到 pop 等等。 當(dāng)您想使用需要隊(duì)列但需要 Lifo 排序的方法時(shí),此視圖可能很有用。

此方法返回的隊(duì)列上的每個(gè)方法調(diào)用都會(huì)導(dǎo)致后備雙端隊(duì)列上的方法調(diào)用只有一個(gè),但有一個(gè)例外。 Queue#addAll 方法被實(shí)現(xiàn)為支持雙端隊(duì)列上的一系列 Deque#addFirst 調(diào)用。

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 雙端隊(duì)列中對(duì)象的類

參數(shù):

參數(shù)名稱 參數(shù)描述
deque 雙端隊(duì)列

返回:

隊(duì)列

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)