java.lang.Object
|---java.util.Collections
public class Collections
extends Object
此类仅由对集合进行操作或返回集合的静态方法组成。 它包含对集合进行操作的多态算法,“包装器”,它返回由指定集合支持的新集合,以及其他一些零碎的东西。
如果提供给它们的集合或类对象为空,则此类的方法都会抛出 NullPointerException。
此类中包含的多态算法的文档通常包括对实现的简要描述。此类描述应被视为实现说明,而不是规范的一部分。只要遵守规范本身,实现者应该可以随意替换其他算法。 (例如,sort 使用的算法不必是归并排序,但它必须是稳定的。)
此类中包含的“破坏性”算法,即修改它们操作的集合的算法,被指定为在集合不支持适当的突变原语(例如 set 方法)时抛出 UnsupportedOperationException。如果调用对集合没有影响,这些算法可能会(但不是必须)抛出此异常。例如,在已排序的不可修改列表上调用 sort 方法可能会也可能不会抛出 UnsupportedOperationException。
此类是 Java 集合框架的成员。
修饰符和类型 | 字段 | 描述 |
---|---|---|
static List | EMPTY_LIST | 空列表(不可变)。 |
static Map | EMPTY_MAP | 空map(不可变)。 |
static Set | EMPTY_SET | 空集(不可变)。 |
修饰符和类型 | 方法 | 描述 |
---|---|---|
static |
addAll(Collection super T> c, T... elements) | 将所有指定元素添加到指定集合。 |
static |
asLifoQueue(Deque |
将 Deque 的视图返回为后进先出 (Lifo) 队列。 |
static |
binarySearch(List extends Comparable super T>> list, T key) | 使用二分搜索算法在指定列表中搜索指定对象。 |
static |
binarySearch(List extends T> list, T key, Comparator super T> c) | 使用二分搜索算法在指定列表中搜索指定对象。 |
static |
checkedCollection(Collection |
返回指定集合的动态类型安全视图。 |
static |
checkedList(List |
返回指定列表的动态类型安全视图。 |
static |
checkedMap(Map |
返回指定映射的动态类型安全视图。 |
static |
checkedNavigableMap(NavigableMap |
返回指定可导航地图的动态类型安全视图。 |
static |
checkedNavigableSet(NavigableSet |
返回指定导航集的动态类型安全视图。 |
static |
checkedQueue(Queue |
返回指定队列的动态类型安全视图。 |
static |
checkedSet(Set |
返回指定集合的动态类型安全视图。 |
static |
checkedSortedMap(SortedMap |
返回指定排序映射的动态类型安全视图。 |
static |
checkedSortedSet(SortedSet |
返回指定排序集的动态类型安全视图。 |
static |
copy(List super T> dest, List extends T> src) | 将一个列表中的所有元素复制到另一个列表中。 |
static boolean | disjoint(Collection> c1, Collection> c2) | 如果两个指定的集合没有共同的元素,则返回 true。 |
static |
emptyEnumeration() | 返回一个没有元素的枚举。 |
static |
emptyIterator() | 返回一个没有元素的迭代器。 |
static |
emptyList() | 返回一个空列表(不可变)。 |
static |
emptyListIterator() | 返回一个没有元素的列表迭代器。 |
static |
emptyMap() | 返回一个空映射(不可变)。 |
static |
emptyNavigableMap() | 返回一个空的可导航map(不可变)。 |
static |
emptyNavigableSet() | 返回一个空的可导航集(不可变)。 |
static |
emptySet() | 返回一个空集(不可变)。 |
static |
emptySortedMap() | 返回一个空的排序映射(不可变)。 |
static |
emptySortedSet() | 返回一个空的排序集(不可变)。 |
static |
enumeration(Collection |
返回指定集合的枚举。 |
static |
fill(List super T> list, T obj) | 用指定元素替换指定列表的所有元素。 |
static int | frequency(Collection> c, Object o) | 返回指定集合中等于指定对象的元素数。 |
static int | indexOfSubList(List> source, List> target) | 返回指定源列表中指定目标列表第一次出现的起始位置,如果没有出现,则返回 -1。 |
static int | lastIndexOfSubList(List> source, List> target) | 返回指定目标列表在指定源列表中最后一次出现的起始位置,如果没有出现,则返回 -1。 |
static |
list(Enumeration |
按枚举返回的顺序返回一个数组列表,其中包含指定枚举返回的元素。 |
static |
max(Collection extends T> coll) | 根据元素的自然顺序返回给定集合的最大元素。 |
static |
max(Collection extends T> coll, Comparator super T> comp) | 根据指定比较器诱导的顺序返回给定集合的最大元素。 |
static |
min(Collection extends T> coll) | 根据元素的自然顺序返回给定集合的最小元素。 |
static |
min(Collection extends T> coll, Comparator super T> comp) | 根据指定比较器诱导的顺序返回给定集合的最小元素。 |
static |
nCopies(int n, T o) | 返回由指定对象的 n 个副本组成的不可变列表。 |
static |
newSetFromMap(MapE,Boolean map) | 返回由指定映射支持的集合。 |
static |
replaceAll(List |
将列表中一个指定值的所有出现替换为另一个。 |
static void | reverse(List> list) | 反转指定列表中元素的顺序。 |
static |
reverseOrder() | 返回一个比较器,它对实现 Comparable 接口的对象集合施加自然顺序的逆向。 |
static |
reverseOrder(Comparator |
返回一个比较器,它强制指定比较器的反向排序。 |
static void | rotate(List> list, int distance) | 将指定列表中的元素旋转指定距离。 |
static void | shuffle(List> list) | 使用默认随机源随机排列指定列表。 |
static void | shuffle(List> list, Random rnd) | 使用指定的随机源随机排列指定的列表。 |
static |
singleton(T o) | 返回一个只包含指定对象的不可变集合。 |
static |
singletonList(T o) | 返回仅包含指定对象的不可变列表。 |
static |
singletonMap(K key, V value) | 返回一个不可变映射,仅将指定的键映射到指定的值。 |
static |
sort(List |
根据其元素的 Comparable 对指定列表进行升序排序。 |
static |
sort(List |
根据指定比较器产生的顺序对指定列表进行排序。 |
static void | swap(List> list, int i, int j) | 交换指定列表中指定位置的元素。 |
static |
synchronizedCollection(Collection |
返回由指定集合支持的同步(线程安全)集合。 |
static |
synchronizedList(List |
返回由指定列表支持的同步(线程安全)列表。 |
static |
synchronizedMap(Map |
返回由指定映射支持的同步(线程安全)映射。 |
static |
synchronizedNavigableMap(NavigableMap |
返回由指定可导航地图支持的同步(线程安全)可导航地图。 |
static |
synchronizedNavigableSet(NavigableSet |
返回由指定导航集支持的同步(线程安全)导航集。 |
static |
synchronizedSet(Set |
返回由指定集支持的同步(线程安全)集。 |
static |
synchronizedSortedMap(SortedMap |
返回由指定排序映射支持的同步(线程安全)排序映射。 |
static |
synchronizedSortedSet(SortedSet |
返回由指定排序集支持的同步(线程安全)排序集。 |
static |
unmodifiableCollection(Collection extends T> c) | 返回指定集合的不可修改视图。 |
static |
unmodifiableList(List extends T> list) | 返回指定列表的不可修改视图。 |
static |
unmodifiableMap(Map extends K,? extends V> m) | 返回指定地图的不可修改视图。 |
static |
unmodifiableNavigableMap(NavigableMap |
返回指定导航地图的不可修改视图。 |
static |
unmodifiableNavigableSet(NavigableSet |
返回指定导航集的不可修改视图。 |
static |
unmodifiableSet(Set extends T> s) | 返回指定集合的不可修改视图。 |
static |
unmodifiableSortedMap(SortedMap |
返回指定排序地图的不可修改视图。 |
static |
unmodifiableSortedSet(SortedSet |
返回指定排序集的不可修改视图。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
public static final List EMPTY_LIST
空列表(不可变)。 这个列表是可序列化的。
public static final Map EMPTY_MAP
空地图(不可变)。 该地图是可序列化的。
public static final Set EMPTY_SET
空集(不可变)。 这个集合是可序列化的。
public static
根据其元素的 Comparable 对指定列表进行升序排序。 列表中的所有元素都必须实现 Comparable 接口。 此外,列表中的所有元素必须相互可比较(即,e1.compareTo(e2) 不得为列表中的任何元素 e1 和 e2 抛出 ClassCastException)。
这种排序保证是稳定的:相同的元素不会因为排序而重新排序。
指定的列表必须是可修改的,但不必调整大小。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 列表中对象的类 |
参数:
参数名称 | 参数描述 |
---|---|
list | 要排序的列表。 |
Throws:
Throw名称 | Throw描述 |
---|---|
ClassCastException | 如果列表包含不可相互比较的元素(例如,字符串和整数)。 |
UnsupportedOperationException | 如果指定列表的列表迭代器不支持设置操作。 |
IllegalArgumentException | (可选)如果实现检测到列表元素的自然顺序被发现违反了 Comparable 合约 |
public static
根据指定比较器产生的顺序对指定列表进行排序。 列表中的所有元素必须使用指定的比较器进行相互比较(即,c.compare(e1, e2) 不得为列表中的任何元素 e1 和 e2 抛出 ClassCastException)。
这种排序保证是稳定的:相同的元素不会因为排序而重新排序。
指定的列表必须是可修改的,但不必调整大小。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 列表中对象的类 |
参数:
参数名称 | 参数描述 |
---|---|
list | 要排序的列表。 |
c | 比较器来确定列表的顺序。 空值表示应使用元素的自然顺序。 |
Throws:
Throw名称 | Throw描述 |
---|---|
ClassCastException | 如果列表包含使用指定比较器不能相互比较的元素。 |
UnsupportedOperationException | 如果指定列表的列表迭代器不支持设置操作。 |
IllegalArgumentException | (可选)如果发现比较器违反了比较器合同 |
public static
使用二分搜索算法在指定列表中搜索指定对象。 在进行此调用之前,必须根据其元素的 Comparable 对列表进行升序排序(如通过 sort(java.util.List) 方法)。 如果未排序,则结果未定义。 如果列表包含多个等于指定对象的元素,则无法保证会找到哪一个。
此方法在 log(n) 时间内针对“随机访问”列表(提供接近恒定时间的位置访问)运行。 如果指定的列表没有实现 RandomAccess 接口并且很大,则此方法将执行基于迭代器的二进制搜索,执行 O(n) 链接遍历和 O(log n) 元素比较。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 列表中对象的类 |
参数:
参数名称 | 参数描述 |
---|---|
list | 要搜索的列表。 |
key | 要搜索的键。 |
返回:
搜索关键字的索引,如果它包含在列表中; 否则,(-(插入点)- 1)。 插入点定义为将键插入列表的点:第一个元素的索引大于键,如果列表中的所有元素都小于指定的键,则为 list.size()。 请注意,这保证了当且仅当找到键时,返回值将 >= 0。
Throws:
Throw名称 | Throw描述 |
---|---|
ClassCastException | 如果列表包含不可相互比较的元素(例如,字符串和整数),或者搜索键与列表的元素不可相互比较。 |
public static
使用二分搜索算法在指定列表中搜索指定对象。 在进行此调用之前,必须根据指定的比较器(如通过 sort(List, Comparator) 方法)对列表进行升序排序。 如果未排序,则结果未定义。 如果列表包含多个等于指定对象的元素,则无法保证会找到哪一个。
此方法在 log(n) 时间内针对“随机访问”列表(提供接近恒定时间的位置访问)运行。 如果指定的列表没有实现 RandomAccess 接口并且很大,则此方法将执行基于迭代器的二进制搜索,执行 O(n) 链接遍历和 O(log n) 元素比较。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 列表中对象的类 |
参数:
参数名称 | 参数描述 |
---|---|
list | 要搜索的列表。 |
key | 要搜索的键。 |
c | 排序列表的比较器。 空值表示应该使用元素的 Comparable。 |
返回:
搜索关键字的索引,如果它包含在列表中; 否则,(-(插入点)- 1)。 插入点定义为将键插入列表的点:第一个元素的索引大于键,如果列表中的所有元素都小于指定的键,则为 list.size()。 请注意,这保证了当且仅当找到键时,返回值将 >= 0。
Throws:
Throw名称 | Throw描述 |
---|---|
ClassCastException | 如果列表包含使用指定比较器不能相互比较的元素,或者搜索键与使用此比较器的列表元素不能相互比较。 |
public static void reverse(List> list)
反转指定列表中元素的顺序。
此方法以线性时间运行。
参数:
参数名称 | 参数描述 |
---|---|
list | 要反转其元素的列表。 |
Throws:
Throw名称 | Throw描述 |
---|---|
UnsupportedOperationException | 如果指定的列表或其列表迭代器不支持设置操作。 |
public static void shuffle(List> list)
使用默认随机源随机排列指定列表。所有排列都以大致相等的可能性发生。
在前面的描述中使用了“大约”对冲,因为默认随机源只是大约独立选择位的无偏源。如果它是随机选择的比特的完美来源,那么该算法将选择具有完美一致性的排列。
此实现从最后一个元素到第二个元素向后遍历列表,反复将随机选择的元素交换到“当前位置”。元素是从列表中从第一个元素到当前位置(含)的部分中随机选择的。
此方法以线性时间运行。如果指定列表没有实现 RandomAccess 接口并且很大,则此实现在打乱之前将指定列表转储到数组中,并将打乱后的数组转储回列表中。这避免了因将“顺序访问”列表改组而导致的二次行为。
参数:
参数名称 | 参数描述 |
---|---|
list | 要洗牌的列表。 |
Throws:
Throw名称 | Throw描述 |
---|---|
UnsupportedOperationException | 如果指定的列表或其列表迭代器不支持设置操作。 |
public static void shuffle(List> list, Random rnd)
使用指定的随机源随机排列指定的列表。 假设随机性的来源是公平的,所有排列都以相同的可能性发生。
此实现从最后一个元素到第二个元素向后遍历列表,反复将随机选择的元素交换到“当前位置”。 元素是从列表中从第一个元素到当前位置(含)的部分中随机选择的。
此方法以线性时间运行。 如果指定列表没有实现 RandomAccess 接口并且很大,则此实现在打乱之前将指定列表转储到数组中,并将打乱后的数组转储回列表中。 这避免了因将“顺序访问”列表改组而导致的二次行为。
参数:
参数名称 | 参数描述 |
---|---|
list | 要洗牌的列表。 |
rnd | 用于随机排列列表的随机源。 |
Throws:
Throw名称 | Throw描述 |
---|---|
UnsupportedOperationException | 如果指定的列表或其列表迭代器不支持设置操作。 |
public static void swap(List> list, int i, int j)
交换指定列表中指定位置的元素。 (如果指定的位置相等,则调用此方法会使列表保持不变。)
参数:
参数名称 | 参数描述 |
---|---|
list | 交换元素的列表。 |
i | 要交换的一个元素的索引。 |
j | 要交换的另一个元素的索引。 |
Throws:
Throw名称 | Throw描述 |
---|---|
IndexOutOfBoundsException | 如果 i 或 j 超出范围 (i < 0 || i >= list.size() || j < 0 || j >= list.size())。 |
public static
用指定元素替换指定列表的所有元素。
此方法以线性时间运行。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 列表中对象的类 |
参数:
参数名称 | 参数描述 |
---|---|
list | 要填充指定元素的列表。 |
obj | 用于填充指定列表的元素。 |
Throws:
Throw名称 | Throw描述 |
---|---|
UnsupportedOperationException | 如果指定的列表或其列表迭代器不支持设置操作。 |
public static
将一个列表中的所有元素复制到另一个列表中。 操作后,目标列表中每个复制元素的索引将与其在源列表中的索引相同。 目标列表必须至少与源列表一样长。 如果它更长,则目标列表中的其余元素不受影响。
此方法以线性时间运行。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 列表中对象的类 |
参数:
参数名称 | 参数描述 |
---|---|
dest | 目的地列表。 |
src | 源列表。 |
Throws:
Throw名称 | Throw描述 |
---|---|
IndexOutOfBoundsException | 如果目标列表太小而无法包含整个源列表。 |
UnsupportedOperationException | 如果目标列表的列表迭代器不支持设置操作。 |
public static
根据元素的自然顺序返回给定集合的最小元素。 集合中的所有元素都必须实现 Comparable 接口。 此外,集合中的所有元素必须相互可比较(即,e1.compareTo(e2) 不得为集合中的任何元素 e1 和 e2 抛出 ClassCastException)。
此方法迭代整个集合,因此它需要与集合大小成正比的时间。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 集合中对象的类 |
参数:
参数名称 | 参数描述 |
---|---|
coll | 要确定其最小元素的集合。 |
返回:
给定集合的最小元素,根据其元素的自然顺序。
Throws:
Throw名称 | Throw描述 |
---|---|
ClassCastException | 如果集合包含不可相互比较的元素(例如,字符串和整数)。 |
NoSuchElementException | 如果集合为空。 |
public static
根据指定比较器诱导的顺序返回给定集合的最小元素。 集合中的所有元素必须通过指定的比较器相互比较(即,comp.compare(e1, e2) 不得为集合中的任何元素 e1 和 e2 抛出 ClassCastException)。
此方法迭代整个集合,因此它需要与集合大小成正比的时间。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 集合中对象的类 |
参数:
参数名称 | 参数描述 |
---|---|
coll | 要确定其最小元素的集合。 |
comp | 用于确定最小元素的比较器。 空值表示应使用元素的自然顺序。 |
返回:
根据指定的比较器,给定集合的最小元素。
Throws:
Throw名称 | Throw描述 |
---|---|
ClassCastException | 如果集合包含使用指定比较器不能相互比较的元素。 |
NoSuchElementException | 如果集合为空。 |
public static
根据元素的自然顺序返回给定集合的最大元素。 集合中的所有元素都必须实现 Comparable 接口。 此外,集合中的所有元素必须相互可比较(即,e1.compareTo(e2) 不得为集合中的任何元素 e1 和 e2 抛出 ClassCastException)。
此方法迭代整个集合,因此它需要与集合大小成正比的时间。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 集合中对象的类 |
参数:
参数名称 | 参数描述 |
---|---|
coll | 要确定其最大元素的集合。 |
返回:
给定集合的最大元素,根据其元素的自然顺序。
Throws:
Throw名称 | Throw描述 |
---|---|
ClassCastException | 如果集合包含不可相互比较的元素(例如,字符串和整数)。 |
NoSuchElementException | 如果集合为空。 |
public static
根据指定比较器诱导的顺序返回给定集合的最大元素。 集合中的所有元素必须通过指定的比较器相互比较(即,comp.compare(e1, e2) 不得为集合中的任何元素 e1 和 e2 抛出 ClassCastException)。
此方法迭代整个集合,因此它需要与集合大小成正比的时间。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 集合中对象的类 |
参数:
参数名称 | 参数描述 |
---|---|
coll | 要确定其最大元素的集合。 |
comp | 用于确定最大元素的比较器。 空值表示应使用元素的自然顺序。 |
返回:
根据指定的比较器,给定集合的最大元素。
Throws:
Throw名称 | Throw描述 |
---|---|
ClassCastException | 如果集合包含使用指定比较器不能相互比较的元素。 |
NoSuchElementException | 如果集合为空。 |
public static void rotate(List> list, int distance)
将指定列表中的元素旋转指定距离。 调用此方法后,索引 i 处的元素将是先前位于索引 (i - 距离) mod list.size() 处的元素,对于 i 的所有值介于 0 和 list.size()-1 之间,包括 0 和 list.size()-1。 (此方法对列表的大小没有影响。)
例如,假设列表包含 [t, a, n, k, s]。 调用 Collections.rotate(list, 1)(或 Collections.rotate(list, -4))后,列表将包含 [s, t, a, n, k]。
请注意,此方法可以有效地应用于子列表,以在列表中移动一个或多个元素,同时保留剩余元素的顺序。 例如,以下习惯用法将索引 j 处的元素向前移动到位置 k(必须大于或等于 j):
Collections.rotate(list.subList(j, k+1), -1);
为了具体说明,假设列表包含 [a, b, c, d, e]。 要将索引 1 (b) 处的元素向前移动两个位置,请执行以下调用:
Collections.rotate(l.subList(1, 4), -1);
结果列表是 [a, c, d, b, e]。
要向前移动多个元素,请增加旋转距离的绝对值。要向后移动元素,请使用正偏移距离。
如果指定的列表很小或实现了 RandomAccess 接口,则此实现将第一个元素交换到它应该去的位置,然后重复地将被替换的元素交换到它应该去的位置,直到一个被替换的元素被交换到第一个元素。如有必要,对第二个和后续元素重复该过程,直到旋转完成。如果指定的列表很大并且没有实现 RandomAccess 接口,则此实现将列表分成两个围绕 index -distance mod 大小的子列表视图。然后在每个子列表视图上调用 reverse(java.util.List) 方法,最后在整个列表上调用它。
参数:
参数名称 | 参数描述 |
---|---|
list | 要轮换的列表。 |
distance | 旋转列表的距离。 这个值没有限制; 它可能为零、负数或大于 list.size()。 |
Throws:
Throw名称 | Throw描述 |
---|---|
UnsupportedOperationException | 如果指定的列表或其列表迭代器不支持设置操作。 |
public static
将列表中一个指定值的所有出现替换为另一个。 更正式地说,用 newVal 替换列表中的每个元素 e,使得 (oldVal==null ? e==null : oldVal.equals(e))。 (此方法对列表的大小没有影响。)
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 列表中对象的类 |
参数:
参数名称 | 参数描述 |
---|---|
list | 要发生替换的列表。 |
oldVal | 要替换的旧值。 |
newVal | oldVal 将被替换的新值。 |
返回:
如果 list 包含一个或多个元素 e 满足 (oldVal==null ? e==null : oldVal.equals(e)),则为 true。
Throws:
Throw名称 | Throw描述 |
---|---|
UnsupportedOperationException | 如果指定的列表或其列表迭代器不支持设置操作。 |
public static int indexOfSubList(List> source, List> target)
返回指定源列表中指定目标列表第一次出现的起始位置,如果没有出现,则返回 -1。 更正式地说,返回满足 source.subList(i, i+target.size()).equals(target) 的最低索引 i,如果没有这样的索引,则返回 -1。 (如果 target.size() > source.size() 则返回 -1)
此实现使用扫描源列表的“brute force”技术,依次在每个位置寻找与目标的匹配。
参数:
参数名称 | 参数描述 |
---|---|
source | 在其中搜索第一次出现的目标的列表。 |
target | 要搜索的列表作为源的子列表。 |
返回:
指定目标列表在指定源列表中第一次出现的起始位置,如果没有出现,则为 -1。
public static int lastIndexOfSubList(List> source, List> target)
返回指定目标列表在指定源列表中最后一次出现的起始位置,如果没有出现,则返回 -1。 更正式地说,返回最高索引 i 使得 source.subList(i, i+target.size()).equals(target),如果没有这样的索引,则返回 -1。 (如果 target.size() > source.size() 则返回 -1)
该实现使用“brute force”技术迭代源列表,依次在每个位置寻找与目标的匹配。
参数:
参数名称 | 参数描述 |
---|---|
source | 要在其中搜索最后一次出现的目标的列表。 |
target | 要搜索的列表作为源的子列表。 |
返回:
指定源列表中指定目标列表的最后一次出现的起始位置,如果没有这样的出现,则为 -1。
public static
返回指定集合的不可修改视图。 此方法允许模块为用户提供对内部集合的“只读”访问权限。 对返回集合的查询操作“通读”到指定集合,并尝试修改返回的集合,无论是直接还是通过其迭代器,都会导致 UnsupportedOperationException。
返回的集合不会将 hashCode 和 equals 操作传递给支持集合,而是依赖于 Object 的 equals 和 hashCode 方法。 在支持集合是集合或列表的情况下,这对于保留这些操作的合同是必要的。
如果指定的集合是可序列化的,则返回的集合将是可序列化的。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 集合中对象的类 |
参数:
参数名称 | 参数描述 |
---|---|
c | 要为其返回不可修改视图的集合。 |
返回:
指定集合的不可修改视图。
public static
返回指定集合的不可修改视图。 此方法允许模块为用户提供对内部集的“只读”访问权限。 对返回集“通读”到指定集的查询操作,并尝试修改返回集,无论是直接还是通过其迭代器,都会导致 UnsupportedOperationException。
如果指定的集合是可序列化的,则返回的集合将是可序列化的。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 集合中对象的类别 |
参数:
参数名称 | 参数描述 |
---|---|
s | 要为其返回不可修改视图的集合。 |
返回:
指定集合的不可修改视图。
public static
返回指定排序集的不可修改视图。 此方法允许模块为用户提供对内部排序集的“只读”访问权限。 对返回的排序集的查询操作“通读”到指定的排序集。 尝试修改返回的排序集,无论是直接的、通过它的迭代器,还是通过它的 subSet、headSet 或 tailSet 视图,都会导致 UnsupportedOperationException。
如果指定的排序集是可序列化的,则返回的排序集将是可序列化的。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 集合中对象的类别 |
参数:
参数名称 | 参数描述 |
---|---|
s | 要为其返回不可修改视图的排序集。 |
返回:
指定排序集的不可修改视图。
public static
返回指定导航集的不可修改视图。 此方法允许模块为用户提供对内部可导航集的“只读”访问权限。 对返回的导航集的查询操作“通读”到指定的导航集。 尝试修改返回的可导航集,无论是直接、通过其迭代器,还是通过其子集、头集或尾集视图,都会导致 UnsupportedOperationException。
如果指定的导航集是可序列化的,则返回的导航集将是可序列化的。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 集合中对象的类别 |
参数:
参数名称 | 参数描述 |
---|---|
s | 要为其返回不可修改视图的可导航集 |
返回:
指定导航集的不可修改视图
public static
返回指定列表的不可修改视图。 此方法允许模块为用户提供对内部列表的“只读”访问权限。 对返回列表的查询操作“通读”到指定列表,并尝试修改返回的列表,无论是直接还是通过其迭代器,都会导致 UnsupportedOperationException。
如果指定的列表是可序列化的,则返回的列表将是可序列化的。 同样,如果指定的列表执行,则返回的列表将实现 RandomAccess。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 列表中对象的类 |
参数:
参数名称 | 参数描述 |
---|---|
list | 要为其返回不可修改视图的列表。 |
返回:
指定列表的不可修改视图。
public static
返回指定地图的不可修改视图。 此方法允许模块为用户提供对内部地图的“只读”访问权限。 对返回的映射“通读”到指定映射的查询操作,并尝试修改返回的映射,无论是直接还是通过其集合视图,都会导致 UnsupportedOperationException。
如果指定的映射是可序列化的,则返回的映射将是可序列化的。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
K | 映射键的类 |
V | 地图值的类别 |
参数:
参数名称 | 参数描述 |
---|---|
m | 要为其返回不可修改视图的map。 |
返回:
指定map的不可修改视图。
public static
返回指定排序地图的不可修改视图。 此方法允许模块为用户提供对内部排序地图的“只读”访问权限。 对返回的有序映射的查询操作“通读”到指定的有序映射。 尝试修改返回的排序地图,无论是直接的、通过它的集合视图,还是通过它的 subMap、headMap 或 tailMap 视图,都会导致 UnsupportedOperationException。
如果指定的排序映射是可序列化的,则返回的排序映射将是可序列化的。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
K | 映射键的类 |
V | map值的类别 |
参数:
参数名称 | 参数描述 |
---|---|
m | 要为其返回不可修改视图的排序映射。 |
返回:
指定排序映射的不可修改视图。
public static
返回指定导航地图的不可修改视图。 此方法允许模块为用户提供对内部可导航地图的“只读”访问权限。 对返回的导航地图的查询操作“通读”到指定的导航地图。 尝试修改返回的可导航地图,无论是直接通过其集合视图,还是通过其 subMap、headMap 或 tailMap 视图,都会导致 UnsupportedOperationException。
如果指定的导航地图是可序列化的,则返回的导航地图将是可序列化的。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
K | 映射键的类 |
V | map值的类别 |
参数:
参数名称 | 参数描述 |
---|---|
m | 要为其返回不可修改视图的可导航map |
返回:
指定导航map的不可修改视图
public static
返回由指定集合支持的同步(线程安全)集合。 为了保证串行访问,对后备集合的所有访问都是通过返回的集合完成的,这一点至关重要。
当通过 Iterator、Spliterator 或 Stream 遍历返回的集合时,用户必须手动同步它:
Collection c = Collections.synchronizedCollection(myCollection);
...
synchronized (c) {
Iterator i = c.iterator(); // Must be in the synchronized block
while (i.hasNext())
foo(i.next());
}
不遵循此建议可能会导致不确定的行为。
返回的集合不会将 hashCode 和 equals 操作传递给支持集合,而是依赖于 Object 的 equals 和 hashCode 方法。 在支持集合是集合或列表的情况下,这对于保留这些操作的合同是必要的。
如果指定的集合是可序列化的,则返回的集合将是可序列化的。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 集合中对象的类 |
参数:
参数名称 | 参数描述 |
---|---|
c | 要“wrapped”在同步集合中的集合。 |
返回:
指定集合的同步视图。
public static
返回由指定集支持的同步(线程安全)集。 为了保证串行访问,对支持集的所有访问都是通过返回集完成的,这一点至关重要。
当迭代它时,用户必须在返回的集合上手动同步:
Set s = Collections.synchronizedSet(new HashSet());
...
synchronized (s) {
Iterator i = s.iterator(); // Must be in the synchronized block
while (i.hasNext())
foo(i.next());
}
不遵循此建议可能会导致不确定的行为。
如果指定的集合是可序列化的,则返回的集合将是可序列化的。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 集合中对象的类别 |
参数:
参数名称 | 参数描述 |
---|---|
s | 要“wrapped”在同步集中的集合。 |
返回:
指定集合的同步视图。
public static
返回由指定排序集支持的同步(线程安全)排序集。 为了保证串行访问,对后备排序集的所有访问都是通过返回的排序集(或其视图)完成的,这一点至关重要。
当迭代返回的排序集或其任何子集、头集或尾集视图时,用户必须手动同步返回的排序集。
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());
}
不遵循此建议可能会导致不确定的行为。
如果指定的排序集是可序列化的,则返回的排序集将是可序列化的。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 集合中对象的类别 |
参数:
参数名称 | 参数描述 |
---|---|
s | 将排序集“wrapped”在同步排序集中。 |
返回:
指定排序集的同步视图。
public static
返回由指定导航集支持的同步(线程安全)导航集。 为了保证串行访问,对支持导航集的所有访问都是通过返回的导航集(或其视图)完成的,这一点至关重要。
当迭代返回的可导航集或其任何子集、头集或尾集视图时,用户必须手动同步返回的可导航集。
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());
}
不遵循此建议可能会导致不确定的行为。
如果指定的导航集是可序列化的,则返回的导航集将是可序列化的。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 集合中对象的类别 |
参数:
参数名称 | 参数描述 |
---|---|
s | 将可导航集“wrapped”在同步可导航集中 |
返回:
指定导航集的同步视图
public static
返回由指定列表支持的同步(线程安全)列表。 为了保证串行访问,对后备列表的所有访问都通过返回的列表完成是至关重要的。
用户在迭代返回的列表时必须手动同步它:
List list = Collections.synchronizedList(new ArrayList());
...
synchronized (list) {
Iterator i = list.iterator(); // Must be in synchronized block
while (i.hasNext())
foo(i.next());
}
不遵循此建议可能会导致不确定的行为。
如果指定的列表是可序列化的,则返回的列表将是可序列化的。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 列表中对象的类 |
参数:
参数名称 | 参数描述 |
---|---|
list | 要“wrapped”在同步列表中的列表。 |
返回:
指定列表的同步视图。
public static
返回由指定映射支持的同步(线程安全)映射。 为了保证串行访问,对支持映射的所有访问都是通过返回的映射完成的,这一点至关重要。
当迭代其任何集合视图时,用户必须在返回的地图上手动同步:
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());
}
不遵循此建议可能会导致不确定的行为。
如果指定的映射是可序列化的,则返回的映射将是可序列化的。
类型参数:
类型参数名
本文名称:创新互联鸿蒙OS教程:鸿蒙OSCollections
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等 声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能 贝锐智能技术为您推荐以下文章
|
---|