创新互联鸿蒙OS教程:鸿蒙OSCollections

Collections

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  boolean addAll(Collection c, T... elements) 将所有指定元素添加到指定集合。
static  Queue asLifoQueue(Deque deque) 将 Deque 的视图返回为后进先出 (Lifo) 队列。
static  int binarySearch(List> list, T key) 使用二分搜索算法在指定列表中搜索指定对象。
static  int binarySearch(List list, T key, Comparator c) 使用二分搜索算法在指定列表中搜索指定对象。
static  Collection checkedCollection(Collection c, Class type) 返回指定集合的动态类型安全视图。
static  List checkedList(List list, Class type) 返回指定列表的动态类型安全视图。
static  Map checkedMap(Map m, Class keyType, Class valueType) 返回指定映射的动态类型安全视图。
static  NavigableMap checkedNavigableMap(NavigableMap m, Class keyType, Class valueType) 返回指定可导航地图的动态类型安全视图。
static  NavigableSet checkedNavigableSet(NavigableSet s, Class type) 返回指定导航集的动态类型安全视图。
static  Queue checkedQueue(Queue queue, Class type) 返回指定队列的动态类型安全视图。
static  Set checkedSet(Set s, Class type) 返回指定集合的动态类型安全视图。
static  SortedMap checkedSortedMap(SortedMap m, Class keyType, Class valueType) 返回指定排序映射的动态类型安全视图。
static  SortedSet checkedSortedSet(SortedSet s, Class type) 返回指定排序集的动态类型安全视图。
static  void copy(List dest, List src) 将一个列表中的所有元素复制到另一个列表中。
static boolean disjoint(Collection c1, Collection c2) 如果两个指定的集合没有共同的元素,则返回 true。
static  Enumeration emptyEnumeration() 返回一个没有元素的枚举。
static  Iterator emptyIterator() 返回一个没有元素的迭代器。
static  List emptyList() 返回一个空列表(不可变)。
static  ListIterator emptyListIterator() 返回一个没有元素的列表迭代器。
static  Map emptyMap() 返回一个空映射(不可变)。
static  NavigableMap emptyNavigableMap() 返回一个空的可导航map(不可变)。
static  NavigableSet emptyNavigableSet() 返回一个空的可导航集(不可变)。
static  Set emptySet() 返回一个空集(不可变)。
static  SortedMap emptySortedMap() 返回一个空的排序映射(不可变)。
static  SortedSet emptySortedSet() 返回一个空的排序集(不可变)。
static  Enumeration enumeration(Collection c) 返回指定集合的枚举。
static  void fill(List 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  ArrayList list(Enumeration e) 按枚举返回的顺序返回一个数组列表,其中包含指定枚举返回的元素。
static >T max(Collection coll) 根据元素的自然顺序返回给定集合的最大元素。
static  T max(Collection coll, Comparator comp) 根据指定比较器诱导的顺序返回给定集合的最大元素。
static >T min(Collection coll) 根据元素的自然顺序返回给定集合的最小元素。
static  T min(Collection coll, Comparator comp) 根据指定比较器诱导的顺序返回给定集合的最小元素。
static  List nCopies(int n, T o) 返回由指定对象的 n 个副本组成的不可变列表。
static  Set newSetFromMap(MapE,Boolean map) 返回由指定映射支持的集合。
static  boolean replaceAll(List list, T oldVal, T newVal) 将列表中一个指定值的所有出现替换为另一个。
static void reverse(List list) 反转指定列表中元素的顺序。
static  Comparator reverseOrder() 返回一个比较器,它对实现 Comparable 接口的对象集合施加自然顺序的逆向。
static  Comparator reverseOrder(Comparator cmp) 返回一个比较器,它强制指定比较器的反向排序。
static void rotate(List list, int distance) 将指定列表中的元素旋转指定距离。
static void shuffle(List list) 使用默认随机源随机排列指定列表。
static void shuffle(List list, Random rnd) 使用指定的随机源随机排列指定的列表。
static  Set singleton(T o) 返回一个只包含指定对象的不可变集合。
static  List singletonList(T o) 返回仅包含指定对象的不可变列表。
static  Map singletonMap(K key, V value) 返回一个不可变映射,仅将指定的键映射到指定的值。
static >void sort(List list) 根据其元素的 Comparable 对指定列表进行升序排序。
static  void sort(List list, Comparator c) 根据指定比较器产生的顺序对指定列表进行排序。
static void swap(List list, int i, int j) 交换指定列表中指定位置的元素。
static  Collection synchronizedCollection(Collection c) 返回由指定集合支持的同步(线程安全)集合。
static  List synchronizedList(List list) 返回由指定列表支持的同步(线程安全)列表。
static  Map synchronizedMap(Map m) 返回由指定映射支持的同步(线程安全)映射。
static  NavigableMap synchronizedNavigableMap(NavigableMap m) 返回由指定可导航地图支持的同步(线程安全)可导航地图。
static  NavigableSet synchronizedNavigableSet(NavigableSet s) 返回由指定导航集支持的同步(线程安全)导航集。
static  Set synchronizedSet(Set s) 返回由指定集支持的同步(线程安全)集。
static  SortedMap synchronizedSortedMap(SortedMap m) 返回由指定排序映射支持的同步(线程安全)排序映射。
static  SortedSet synchronizedSortedSet(SortedSet s) 返回由指定排序集支持的同步(线程安全)排序集。
static  Collection unmodifiableCollection(Collection c) 返回指定集合的不可修改视图。
static  List unmodifiableList(List list) 返回指定列表的不可修改视图。
static  Map unmodifiableMap(Map m) 返回指定地图的不可修改视图。
static  NavigableMap unmodifiableNavigableMap(NavigableMap m) 返回指定导航地图的不可修改视图。
static  NavigableSet unmodifiableNavigableSet(NavigableSet s) 返回指定导航集的不可修改视图。
static  Set unmodifiableSet(Set s) 返回指定集合的不可修改视图。
static  SortedMap unmodifiableSortedMap(SortedMap m) 返回指定排序地图的不可修改视图。
static  SortedSet unmodifiableSortedSet(SortedSet s) 返回指定排序集的不可修改视图。
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

字段详细信息

EMPTY_LIST

public static final List EMPTY_LIST

空列表(不可变)。 这个列表是可序列化的。

EMPTY_MAP

public static final Map EMPTY_MAP

空地图(不可变)。 该地图是可序列化的。

EMPTY_SET

public static final Set EMPTY_SET

空集(不可变)。 这个集合是可序列化的。

方法详情

sort

public static > void sort(List list)

根据其元素的 Comparable 对指定列表进行升序排序。 列表中的所有元素都必须实现 Comparable 接口。 此外,列表中的所有元素必须相互可比较(即,e1.compareTo(e2) 不得为列表中的任何元素 e1 和 e2 抛出 ClassCastException)。

这种排序保证是稳定的:相同的元素不会因为排序而重新排序。

指定的列表必须是可修改的,但不必调整大小。

类型参数:

类型参数名称 类型参数描述
T 列表中对象的类

参数:

参数名称 参数描述
list 要排序的列表。

Throws:

Throw名称 Throw描述
ClassCastException 如果列表包含不可相互比较的元素(例如,字符串和整数)。
UnsupportedOperationException 如果指定列表的列表迭代器不支持设置操作。
IllegalArgumentException (可选)如果实现检测到列表元素的自然顺序被发现违反了 Comparable 合约

sort

public static void sort(List list, Comparator c)

根据指定比较器产生的顺序对指定列表进行排序。 列表中的所有元素必须使用指定的比较器进行相互比较(即,c.compare(e1, e2) 不得为列表中的任何元素 e1 和 e2 抛出 ClassCastException)。

这种排序保证是稳定的:相同的元素不会因为排序而重新排序。

指定的列表必须是可修改的,但不必调整大小。

类型参数:

类型参数名称 类型参数描述
T 列表中对象的类

参数:

参数名称 参数描述
list 要排序的列表。
c 比较器来确定列表的顺序。 空值表示应使用元素的自然顺序。

Throws:

Throw名称 Throw描述
ClassCastException 如果列表包含使用指定比较器不能相互比较的元素。
UnsupportedOperationException 如果指定列表的列表迭代器不支持设置操作。
IllegalArgumentException (可选)如果发现比较器违反了比较器合同

binarySearch

public static int binarySearch(List> list, T key)

使用二分搜索算法在指定列表中搜索指定对象。 在进行此调用之前,必须根据其元素的 Comparable 对列表进行升序排序(如通过 sort(java.util.List) 方法)。 如果未排序,则结果未定义。 如果列表包含多个等于指定对象的元素,则无法保证会找到哪一个。

此方法在 log(n) 时间内针对“随机访问”列表(提供接近恒定时间的位置访问)运行。 如果指定的列表没有实现 RandomAccess 接口并且很大,则此方法将执行基于迭代器的二进制搜索,执行 O(n) 链接遍历和 O(log n) 元素比较。

类型参数:

类型参数名称 类型参数描述
T 列表中对象的类

参数:

参数名称 参数描述
list 要搜索的列表。
key 要搜索的键。

返回:

搜索关键字的索引,如果它包含在列表中; 否则,(-(插入点)- 1)。 插入点定义为将键插入列表的点:第一个元素的索引大于键,如果列表中的所有元素都小于指定的键,则为 list.size()。 请注意,这保证了当且仅当找到键时,返回值将 >= 0。

Throws:

Throw名称 Throw描述
ClassCastException 如果列表包含不可相互比较的元素(例如,字符串和整数),或者搜索键与列表的元素不可相互比较。

binarySearch

public static int binarySearch(List list, T key, Comparator c)

使用二分搜索算法在指定列表中搜索指定对象。 在进行此调用之前,必须根据指定的比较器(如通过 sort(List, Comparator) 方法)对列表进行升序排序。 如果未排序,则结果未定义。 如果列表包含多个等于指定对象的元素,则无法保证会找到哪一个。

此方法在 log(n) 时间内针对“随机访问”列表(提供接近恒定时间的位置访问)运行。 如果指定的列表没有实现 RandomAccess 接口并且很大,则此方法将执行基于迭代器的二进制搜索,执行 O(n) 链接遍历和 O(log n) 元素比较。

类型参数:

类型参数名称 类型参数描述
T 列表中对象的类

参数:

参数名称 参数描述
list 要搜索的列表。
key 要搜索的键。
c 排序列表的比较器。 空值表示应该使用元素的 Comparable。

返回:

搜索关键字的索引,如果它包含在列表中; 否则,(-(插入点)- 1)。 插入点定义为将键插入列表的点:第一个元素的索引大于键,如果列表中的所有元素都小于指定的键,则为 list.size()。 请注意,这保证了当且仅当找到键时,返回值将 >= 0。

Throws:

Throw名称 Throw描述
ClassCastException 如果列表包含使用指定比较器不能相互比较的元素,或者搜索键与使用此比较器的列表元素不能相互比较。

reverse

public static void reverse(List list)

反转指定列表中元素的顺序。

此方法以线性时间运行。

参数:

参数名称 参数描述
list 要反转其元素的列表。

Throws:

Throw名称 Throw描述
UnsupportedOperationException 如果指定的列表或其列表迭代器不支持设置操作。

shuffle

public static void shuffle(List list)

使用默认随机源随机排列指定列表。所有排列都以大致相等的可能性发生。

在前面的描述中使用了“大约”对冲,因为默认随机源只是大约独立选择位的无偏源。如果它是随机选择的比特的完美来源,那么该算法将选择具有完美一致性的排列。

此实现从最后一个元素到第二个元素向后遍历列表,反复将随机选择的元素交换到“当前位置”。元素是从列表中从第一个元素到当前位置(含)的部分中随机选择的。

此方法以线性时间运行。如果指定列表没有实现 RandomAccess 接口并且很大,则此实现在打乱之前将指定列表转储到数组中,并将打乱后的数组转储回列表中。这避免了因将“顺序访问”列表改组而导致的二次行为。

参数:

参数名称 参数描述
list 要洗牌的列表。

Throws:

Throw名称 Throw描述
UnsupportedOperationException 如果指定的列表或其列表迭代器不支持设置操作。

shuffle

public static void shuffle(List list, Random rnd)

使用指定的随机源随机排列指定的列表。 假设随机性的来源是公平的,所有排列都以相同的可能性发生。

此实现从最后一个元素到第二个元素向后遍历列表,反复将随机选择的元素交换到“当前位置”。 元素是从列表中从第一个元素到当前位置(含)的部分中随机选择的。

此方法以线性时间运行。 如果指定列表没有实现 RandomAccess 接口并且很大,则此实现在打乱之前将指定列表转储到数组中,并将打乱后的数组转储回列表中。 这避免了因将“顺序访问”列表改组而导致的二次行为。

参数:

参数名称 参数描述
list 要洗牌的列表。
rnd 用于随机排列列表的随机源。

Throws:

Throw名称 Throw描述
UnsupportedOperationException 如果指定的列表或其列表迭代器不支持设置操作。

swap

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())。

fill

public static void fill(List list, T obj)

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

此方法以线性时间运行。

类型参数:

类型参数名称 类型参数描述
T 列表中对象的类

参数:

参数名称 参数描述
list 要填充指定元素的列表。
obj 用于填充指定列表的元素。

Throws:

Throw名称 Throw描述
UnsupportedOperationException 如果指定的列表或其列表迭代器不支持设置操作。

copy

public static void copy(List dest, List src)

将一个列表中的所有元素复制到另一个列表中。 操作后,目标列表中每个复制元素的索引将与其在源列表中的索引相同。 目标列表必须至少与源列表一样长。 如果它更长,则目标列表中的其余元素不受影响。

此方法以线性时间运行。

类型参数:

类型参数名称 类型参数描述
T 列表中对象的类

参数:

参数名称 参数描述
dest 目的地列表。
src 源列表。

Throws:

Throw名称 Throw描述
IndexOutOfBoundsException 如果目标列表太小而无法包含整个源列表。
UnsupportedOperationException 如果目标列表的列表迭代器不支持设置操作。

min

public static > T min(Collection coll)

根据元素的自然顺序返回给定集合的最小元素。 集合中的所有元素都必须实现 Comparable 接口。 此外,集合中的所有元素必须相互可比较(即,e1.compareTo(e2) 不得为集合中的任何元素 e1 和 e2 抛出 ClassCastException)。

此方法迭代整个集合,因此它需要与集合大小成正比的时间。

类型参数:

类型参数名称 类型参数描述
T 集合中对象的类

参数:

参数名称 参数描述
coll 要确定其最小元素的集合。

返回:

给定集合的最小元素,根据其元素的自然顺序。

Throws:

Throw名称 Throw描述
ClassCastException 如果集合包含不可相互比较的元素(例如,字符串和整数)。
NoSuchElementException 如果集合为空。

min

public static T min(Collection coll, Comparator comp)

根据指定比较器诱导的顺序返回给定集合的最小元素。 集合中的所有元素必须通过指定的比较器相互比较(即,comp.compare(e1, e2) 不得为集合中的任何元素 e1 和 e2 抛出 ClassCastException)。

此方法迭代整个集合,因此它需要与集合大小成正比的时间。

类型参数:

类型参数名称 类型参数描述
T 集合中对象的类

参数:

参数名称 参数描述
coll 要确定其最小元素的集合。
comp 用于确定最小元素的比较器。 空值表示应使用元素的自然顺序。

返回:

根据指定的比较器,给定集合的最小元素。

Throws:

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

max

public static > T max(Collection coll)

根据元素的自然顺序返回给定集合的最大元素。 集合中的所有元素都必须实现 Comparable 接口。 此外,集合中的所有元素必须相互可比较(即,e1.compareTo(e2) 不得为集合中的任何元素 e1 和 e2 抛出 ClassCastException)。

此方法迭代整个集合,因此它需要与集合大小成正比的时间。

类型参数:

类型参数名称 类型参数描述
T 集合中对象的类

参数:

参数名称 参数描述
coll 要确定其最大元素的集合。

返回:

给定集合的最大元素,根据其元素的自然顺序。

Throws:

Throw名称 Throw描述
ClassCastException 如果集合包含不可相互比较的元素(例如,字符串和整数)。
NoSuchElementException 如果集合为空。

max

public static T max(Collection coll, Comparator comp)

根据指定比较器诱导的顺序返回给定集合的最大元素。 集合中的所有元素必须通过指定的比较器相互比较(即,comp.compare(e1, e2) 不得为集合中的任何元素 e1 和 e2 抛出 ClassCastException)。

此方法迭代整个集合,因此它需要与集合大小成正比的时间。

类型参数:

类型参数名称 类型参数描述
T 集合中对象的类

参数:

参数名称 参数描述
coll 要确定其最大元素的集合。
comp 用于确定最大元素的比较器。 空值表示应使用元素的自然顺序。

返回:

根据指定的比较器,给定集合的最大元素。

Throws:

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

rotate

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 如果指定的列表或其列表迭代器不支持设置操作。

replaceAll

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

将列表中一个指定值的所有出现替换为另一个。 更正式地说,用 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 如果指定的列表或其列表迭代器不支持设置操作。

indexOfSubList

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。

lastIndexOfSubList

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。

unmodifiableCollection

public static Collection unmodifiableCollection(Collection c)

返回指定集合的不可修改视图。 此方法允许模块为用户提供对内部集合的“只读”访问权限。 对返回集合的查询操作“通读”到指定集合,并尝试修改返回的集合,无论是直接还是通过其迭代器,都会导致 UnsupportedOperationException。

返回的集合不会将 hashCode 和 equals 操作传递给支持集合,而是依赖于 Object 的 equals 和 hashCode 方法。 在支持集合是集合或列表的情况下,这对于保留这些操作的合同是必要的。

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

类型参数:

类型参数名称 类型参数描述
T 集合中对象的类

参数:

参数名称 参数描述
c 要为其返回不可修改视图的集合。

返回:

指定集合的不可修改视图。

unmodifiableSet

public static Set unmodifiableSet(Set s)

返回指定集合的不可修改视图。 此方法允许模块为用户提供对内部集的“只读”访问权限。 对返回集“通读”到指定集的查询操作,并尝试修改返回集,无论是直接还是通过其迭代器,都会导致 UnsupportedOperationException。

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

类型参数:

类型参数名称 类型参数描述
T 集合中对象的类别

参数:

参数名称 参数描述
s 要为其返回不可修改视图的集合。

返回:

指定集合的不可修改视图。

unmodifiableSortedSet

public static SortedSet unmodifiableSortedSet(SortedSet s)

返回指定排序集的不可修改视图。 此方法允许模块为用户提供对内部排序集的“只读”访问权限。 对返回的排序集的查询操作“通读”到指定的排序集。 尝试修改返回的排序集,无论是直接的、通过它的迭代器,还是通过它的 subSet、headSet 或 tailSet 视图,都会导致 UnsupportedOperationException。

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

类型参数:

类型参数名称 类型参数描述
T 集合中对象的类别

参数:

参数名称 参数描述
s 要为其返回不可修改视图的排序集。

返回:

指定排序集的不可修改视图。

unmodifiableNavigableSet

public static NavigableSet unmodifiableNavigableSet(NavigableSet s)

返回指定导航集的不可修改视图。 此方法允许模块为用户提供对内部可导航集的“只读”访问权限。 对返回的导航集的查询操作“通读”到指定的导航集。 尝试修改返回的可导航集,无论是直接、通过其迭代器,还是通过其子集、头集或尾集视图,都会导致 UnsupportedOperationException。

如果指定的导航集是可序列化的,则返回的导航集将是可序列化的。

类型参数:

类型参数名称 类型参数描述
T 集合中对象的类别

参数:

参数名称 参数描述
s 要为其返回不可修改视图的可导航集

返回:

指定导航集的不可修改视图

unmodifiableList

public static List unmodifiableList(List list)

返回指定列表的不可修改视图。 此方法允许模块为用户提供对内部列表的“只读”访问权限。 对返回列表的查询操作“通读”到指定列表,并尝试修改返回的列表,无论是直接还是通过其迭代器,都会导致 UnsupportedOperationException。

如果指定的列表是可序列化的,则返回的列表将是可序列化的。 同样,如果指定的列表执行,则返回的列表将实现 RandomAccess。

类型参数:

类型参数名称 类型参数描述
T 列表中对象的类

参数:

参数名称 参数描述
list 要为其返回不可修改视图的列表。

返回:

指定列表的不可修改视图。

unmodifiableMap

public static Map unmodifiableMap(Map m)

返回指定地图的不可修改视图。 此方法允许模块为用户提供对内部地图的“只读”访问权限。 对返回的映射“通读”到指定映射的查询操作,并尝试修改返回的映射,无论是直接还是通过其集合视图,都会导致 UnsupportedOperationException。

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

类型参数:

类型参数名称 类型参数描述
K 映射键的类
V 地图值的类别

参数:

参数名称 参数描述
m 要为其返回不可修改视图的map。

返回:

指定map的不可修改视图。

unmodifiableSortedMap

public static SortedMap unmodifiableSortedMap(SortedMap m)

返回指定排序地图的不可修改视图。 此方法允许模块为用户提供对内部排序地图的“只读”访问权限。 对返回的有序映射的查询操作“通读”到指定的有序映射。 尝试修改返回的排序地图,无论是直接的、通过它的集合视图,还是通过它的 subMap、headMap 或 tailMap 视图,都会导致 UnsupportedOperationException。

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

类型参数:

类型参数名称 类型参数描述
K 映射键的类
V map值的类别

参数:

参数名称 参数描述
m 要为其返回不可修改视图的排序映射。

返回:

指定排序映射的不可修改视图。

unmodifiableNavigableMap

public static NavigableMap unmodifiableNavigableMap(NavigableMap m)

返回指定导航地图的不可修改视图。 此方法允许模块为用户提供对内部可导航地图的“只读”访问权限。 对返回的导航地图的查询操作“通读”到指定的导航地图。 尝试修改返回的可导航地图,无论是直接通过其集合视图,还是通过其 subMap、headMap 或 tailMap 视图,都会导致 UnsupportedOperationException。

如果指定的导航地图是可序列化的,则返回的导航地图将是可序列化的。

类型参数:

类型参数名称 类型参数描述
K 映射键的类
V map值的类别

参数:

参数名称 参数描述
m 要为其返回不可修改视图的可导航map

返回:

指定导航map的不可修改视图

synchronizedCollection

public static Collection synchronizedCollection(Collection c)

返回由指定集合支持的同步(线程安全)集合。 为了保证串行访问,对后备集合的所有访问都是通过返回的集合完成的,这一点至关重要。

当通过 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”在同步集合中的集合。

返回:

指定集合的同步视图。

synchronizedSet

public static Set synchronizedSet(Set s)

返回由指定集支持的同步(线程安全)集。 为了保证串行访问,对支持集的所有访问都是通过返回集完成的,这一点至关重要。

当迭代它时,用户必须在返回的集合上手动同步:

  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”在同步集中的集合。

返回:

指定集合的同步视图。

synchronizedSortedSet

public static SortedSet synchronizedSortedSet(SortedSet s)

返回由指定排序集支持的同步(线程安全)排序集。 为了保证串行访问,对后备排序集的所有访问都是通过返回的排序集(或其视图)完成的,这一点至关重要。

当迭代返回的排序集或其任何子集、头集或尾集视图时,用户必须手动同步返回的排序集。

  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”在同步排序集中。

返回:

指定排序集的同步视图。

synchronizedNavigableSet

public static NavigableSet synchronizedNavigableSet(NavigableSet s)

返回由指定导航集支持的同步(线程安全)导航集。 为了保证串行访问,对支持导航集的所有访问都是通过返回的导航集(或其视图)完成的,这一点至关重要。

当迭代返回的可导航集或其任何子集、头集或尾集视图时,用户必须手动同步返回的可导航集。

  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”在同步可导航集中

返回:

指定导航集的同步视图

synchronizedList

public static List synchronizedList(List list)

返回由指定列表支持的同步(线程安全)列表。 为了保证串行访问,对后备列表的所有访问都通过返回的列表完成是至关重要的。

用户在迭代返回的列表时必须手动同步它:

  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”在同步列表中的列表。

返回:

指定列表的同步视图。

synchronizedMap

public static Map synchronizedMap(Map m)

返回由指定映射支持的同步(线程安全)映射。 为了保证串行访问,对支持映射的所有访问都是通过返回的映射完成的,这一点至关重要。

当迭代其任何集合视图时,用户必须在返回的地图上手动同步:

  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
文章网址:http://www.mswzjz.cn/qtweb/news47/424447.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能