public class Collections extends Object
这个类的方法把一NullPointerException如果集合或类对象提供的都是零。
对多态性算法中包含的文档这类一般包括一个简短的描述实施。这样的描述应该是实现注意事项,而不是部分的规范。实施者应随时替代其他算法,只要规范本身就是坚持。(例如,用sort算法不需要归并排序,但它必须稳定的。)
“破坏性”的算法包含在这个类,即算法,修改其操作集合,规定如果集合不支持相应的突变原始扔UnsupportedOperationException(S),如set方法。这些算法可以,但不需要,抛出这个异常,如果一个调用将不会对集合有影响。例如,调用sort方法在一个不可修改的列表,已经排序的可能或不可能把UnsupportedOperationException。
这个班的一员 Java Collections Framework。
Collection
,
Set
,
List
,
Map
Modifier and Type | Field and Description |
---|---|
static List |
EMPTY_LIST
空列表(不可变)。
|
static Map |
EMPTY_MAP
空Map(不可变)。
|
static Set |
EMPTY_SET
空集(不可变)。
|
Modifier and Type | Method and Description |
---|---|
static <T> boolean |
addAll(Collection<? super T> c, T... elements)
将所有指定的元素添加到指定的集合中。
|
static <T> Queue<T> |
asLifoQueue(Deque<T> deque)
|
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 <E> Collection<E> |
checkedCollection(Collection<E> c, 类<E> type)
返回一个指定集合的动态类型安全的观点。
|
static <E> List<E> |
checkedList(List<E> list, 类<E> type)
返回一个动态类型安全的查看指定的列表。
|
static <K,V> Map<K,V> |
checkedMap(Map<K,V> m, 类<K> keyType, 类<V> valueType)
返回一个动态类型安全的查看指定的Map。
|
static <K,V> NavigableMap<K,V> |
checkedNavigableMap(NavigableMap<K,V> m, 类<K> keyType, 类<V> valueType)
返回一个动态类型安全的查看指定的导航电子Map。
|
static <E> NavigableSet<E> |
checkedNavigableSet(NavigableSet<E> s, 类<E> type)
返回一个动态类型安全的集合视图指定通航。
|
static <E> Queue<E> |
checkedQueue(Queue<E> queue, 类<E> type)
返回一个动态类型安全的查看指定队列。
|
static <E> Set<E> |
checkedSet(Set<E> s, 类<E> type)
返回一个指定的动态类型安全的观点。
|
static <K,V> SortedMap<K,V> |
checkedSortedMap(SortedMap<K,V> m, 类<K> keyType, 类<V> valueType)
返回一个动态类型安全的查看指定的排序图。
|
static <E> SortedSet<E> |
checkedSortedSet(SortedSet<E> s, 类<E> type)
返回一个动态类型安全的查看指定的排序设置。
|
static <T> void |
copy(List<? super T> dest, List<? extends T> src)
将所有的元素从一个列表复制到另一个列表中。
|
static boolean |
disjoint(Collection<?> c1, Collection<?> c2)
返回
true 如果两个指定集合没有共同的元素。
|
static <T> Enumeration<T> |
emptyEnumeration()
返回一个没有元素的枚举。
|
static <T> Iterator<T> |
emptyIterator()
返回一个没有元素的迭代器。
|
static <T> List<T> |
emptyList()
返回一个空列表(不可变)。
|
static <T> ListIterator<T> |
emptyListIterator()
返回一个没有元素的列表迭代器。
|
static <K,V> Map<K,V> |
emptyMap()
返回一个空Map(不可变)。
|
static <K,V> NavigableMap<K,V> |
emptyNavigableMap()
返回一个空的导航Map(不可变)。
|
static <E> NavigableSet<E> |
emptyNavigableSet()
返回一个空的导航集(不可变)。
|
static <T> Set<T> |
emptySet()
返回一个空集(不可变)。
|
static <K,V> SortedMap<K,V> |
emptySortedMap()
返回一个空的排序映射(不可变)。
|
static <E> SortedSet<E> |
emptySortedSet()
返回一个空的排序集(不可变)。
|
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)
返回指定集合中等于指定对象的元素的数目。
|
static int |
indexOfSubList(List<?> source, List<?> target)
返回指定的源列表中指定的目标列表的第一个发生的起始位置,或-如果没有这样的发生,则- 1。
|
static int |
lastIndexOfSubList(List<?> source, List<?> target)
返回指定的源列表中指定的目标列表的最后一个发生的起始位置,或-如果没有这样的发生,则- 1。
|
static <T> ArrayList<T> |
list(Enumeration<T> e)
返回一个数组列表,该列表包含在返回的顺序中由枚举返回的元素的元素。
|
static <T extends Object & Comparable<? super T>> |
max(Collection<? extends T> coll)
返回最大元素的集合,根据其元素的自然排序。
|
static <T> T |
max(Collection<? extends T> coll, Comparator<? super T> comp)
返回给定集合的最大元素,根据指定的比较器诱导的顺序。
|
static <T extends Object & Comparable<? super T>> |
min(Collection<? extends T> coll)
返回最小的元素的集合,根据其元素的自然排序。
|
static <T> T |
min(Collection<? extends T> coll, Comparator<? super T> comp)
返回给定集合的最小元素,根据指定的比较器诱导的顺序。
|
static <T> List<T> |
nCopies(int n, T o)
返回一个不可变列表包含指定对象的
n副本。
|
static <E> Set<E> |
newSetFromMap(Map<E,Boolean> map)
返回一个由指定的映射支持的集合。
|
static <T> boolean |
replaceAll(List<T> list, T oldVal, T newVal)
将列表中的某一特定值的所有出现替换为另一个。
|
static void |
reverse(List<?> list)
反转指定列表中元素的顺序。
|
static <T> Comparator<T> |
reverseOrder()
返回一个比较器,对一系列的实施
Comparable 界面对象的自然顺序相反。
|
static <T> Comparator<T> |
reverseOrder(Comparator<T> cmp)
返回一个对指定比较器的反向排序的比较器。
|
static void |
rotate(List<?> list, int distance)
按指定的距离旋转指定列表中的元素。
|
static void |
shuffle(List<?> list)
随机置换指定列表使用随机默认源。
|
static void |
shuffle(List<?> list, Random rnd)
随机排列指定列表使用指定的随机源。
|
static <T> Set<T> |
singleton(T o)
返回只包含指定对象的不可改变的集合。
|
static <T> List<T> |
singletonList(T o)
返回只包含指定对象的不可改变的列表。
|
static <K,V> Map<K,V> |
singletonMap(K key, V value)
返回一个不可改变的Map,只将指定的指定的键映射到指定的值。
|
static <T extends Comparable<? super T>> |
sort(List<T> list)
指定列表为升序排序,根据其元素的
natural ordering。
|
static <T> void |
sort(List<T> list, Comparator<? super T> c)
根据指定的比较器指定的顺序对指定的列表进行排序。
|
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)
返回由指定的Map支持的同步(线程安全)Map。
|
static <K,V> NavigableMap<K,V> |
synchronizedNavigableMap(NavigableMap<K,V> m)
返回指定的导航Map支持的同步(线程安全)导航Map。
|
static <T> NavigableSet<T> |
synchronizedNavigableSet(NavigableSet<T> s)
返回由指定的导航集支持的同步(线程安全)导航集。
|
static <T> Set<T> |
synchronizedSet(Set<T> s)
返回一个由指定集合支持的同步(线程安全)集。
|
static <K,V> SortedMap<K,V> |
synchronizedSortedMap(SortedMap<K,V> m)
返回一个由指定的排序映射支持的同步(线程安全)排序的Map。
|
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)
返回指定的导航电子Map的一个不可修改的视图。
|
static <T> NavigableSet<T> |
unmodifiableNavigableSet(NavigableSet<T> s)
返回指定通航设置不可修改的视图。
|
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)
返回指定的排序设置不可修改的视图。
|
public static final Set EMPTY_SET
emptySet()
public static final List EMPTY_LIST
emptyList()
public static final Map EMPTY_MAP
emptyMap()
public static <T extends Comparable<? super T>> void sort(List<T> list)
Comparable
接口。此外,列表中的所有元素必须相互比较(即
e1.compareTo(e2)
不得把任何元素
e1
和
e2
列表中的
ClassCastException
)。
这种保证是稳定的:相等的元素不会被重新排序结果的排序。
指定列表必须是可修改的,但不需要调整大小。
注:这是一个实现实现稳定、自适应迭代归并排序需要远少于n lg(n)比较,当输入阵列部分排序,同时提供传统的归并排序的性能时,输入数组的随机排列。如果输入数组几乎是排序的,实现需要约n个比较。临时存储的要求不同从一个小的常数为近排序的输入阵列到n / 2对象的参考随机排列的输入阵列。
在相同的输入数组中,实现在它的输入数组中具有相同的上升和下降的顺序,并可以利用在不同的部分的上升和下降的顺序。它非常适合于合并两个或多个已排序数组:直接连接阵列和由此产生的数组排序。
实施改编自Tim Peters的列表排序为Python( TimSort)。它采用的技术,从Peter McIlroy的“乐观的排序和信息理论的复杂性”,在第四届研讨会上ANALCO ACM- SIAM离散算法,PP 467-474,一月1993。
这个实现转储到一个数组中指定的列表,排序的数组,遍历列表重置各要素从数组中的对应位置。这避免了n二 log(n)的性能,将导致试图一个链表排序。
T
的对象列表中的类
list
-列表进行排序。
ClassCastException
-如果列表包含不相互比较元素(例如,字符串和整数)。
UnsupportedOperationException
-如果指定列表的列表迭代器不支持
set
操作。
IllegalArgumentException
-(可选)如果实现检测到列表元素的自然顺序
Comparable
发现违反合同
public static <T> void sort(List<T> list, Comparator<? super T> c)
c.compare(e1, e2)
不得把任何元素
e1
和
e2
列表中的
ClassCastException
)。
这种保证是稳定的:相等的元素不会被重新排序结果的排序。
指定列表必须是可修改的,但不需要调整大小。
注:这是一个实现实现稳定、自适应迭代归并排序需要远少于n lg(n)比较,当输入阵列部分排序,同时提供传统的归并排序的性能时,输入数组的随机排列。如果输入数组几乎是排序的,实现需要约n个比较。临时存储的要求不同从一个小的常数为近排序的输入阵列到n / 2对象的参考随机排列的输入阵列。
在相同的输入数组中,实现在它的输入数组中具有相同的上升和下降的顺序,并可以利用在不同的部分的上升和下降的顺序。它非常适合于合并两个或多个已排序数组:直接连接阵列和由此产生的数组排序。
实施改编自Tim Peters的列表排序为Python( TimSort)。它采用的技术,从Peter McIlroy的“乐观的排序和信息理论的复杂性”,在第四届研讨会上ANALCO ACM- SIAM离散算法,PP 467-474,一月1993。
这个实现转储到一个数组中指定的列表,排序的数组,遍历列表重置各要素从数组中的对应位置。这避免了n二 log(n)的性能,将导致试图一个链表排序。
T
的对象列表中的类
list
-列表进行排序。
c
-比较器确定列表的顺序。一个
null
值表示元素的自然排序应使用。
ClassCastException
-如果列表包含不相互比较使用指定的比较器元件。
UnsupportedOperationException
-如果指定列表的列表迭代器不支持
set
操作。
IllegalArgumentException
-(可选)如果比较器被发现违反
Comparator
合同
public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)
sort(List)
法)进行调用之前。如果它没有排序,结果是不确定的。如果列表中包含多个元素等于指定的对象,则无法找到一个将被发现的保证。
这种方法运行在日志(n)的时间为一个“随机访问”列表(它提供了接近恒定的时间位置访问)。如果指定的目录不实施RandomAccess
接口和大,此方法将做一个基于迭代器的二进制搜索执行O(n)的链接遍历和O(log n)的元素比较。
T
的对象列表中的类
list
-列表搜索。
key
-要搜索的关键。
ClassCastException
-如果列表包含不相互比较元素(例如,字符串和整数),或搜索关键不可相互比较与列表中的元素。
public static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
sort(List, Comparator)
方法),使这个打电话之前。如果它没有排序,结果是不确定的。如果列表中包含多个元素等于指定的对象,则无法找到一个将被发现的保证。
这种方法运行在日志(n)的时间为一个“随机访问”列表(它提供了接近恒定的时间位置访问)。如果指定的目录不实施RandomAccess
接口和大,此方法将做一个基于迭代器的二进制搜索执行O(n)的链接遍历和O(log n)的元素比较。
T
的对象列表中的类
list
-列表搜索。
key
-要搜索的关键。
c
-比较器的列表是有序的。一个
null值表示元素的
natural ordering应使用。
ClassCastException
-如果列表包含不相互比较使用指定的比较器的元素,或搜索关键不可相互比较的元素的列表使用这个比较器。
public static void reverse(List<?> list)
该方法在线性时间内运行。
list
的元素都被逆转的列表。
UnsupportedOperationException
-如果指定列表或列表迭代器不支持
set操作。
public static void shuffle(List<?> list)
对冲“大约”是在上面的描述中使用,因为默认源的随机性是只有大约一个独立选择的位的公正来源。如果它是一个完美的随机选择位的来源,那么该算法将选择完美的均匀排列。
这个实现遍历列表后,从最后一个元素到二,多次交换一个随机选择的元素为“当前位置”。元素被随机地从从第一个元素运行到当前位置的列表的一部分中随机选择的。
该方法在线性时间内运行。如果指定的目录不实施RandomAccess
接口和大,这个实现转储到一个数组中指定的列表在洗牌,把拖曳阵列返回列表。这避免了将导致“顺序访问”列表中的“顺序访问”列表的二次行为。
list
-列表被洗牌。
UnsupportedOperationException
-如果指定列表或列表迭代器不支持
set操作。
public static void shuffle(List<?> list, Random rnd)
这个实现遍历列表后,从最后一个元素到二,多次交换一个随机选择的元素为“当前位置”。元素被随机地从从第一个元素运行到当前位置的列表的一部分中随机选择的。
该方法在线性时间内运行。如果指定的目录不实施RandomAccess
接口和大,这个实现转储到一个数组中指定的列表在洗牌,把拖曳阵列返回列表。这避免了将导致“顺序访问”列表中的“顺序访问”列表的二次行为。
list
-列表被洗牌。
rnd
-随机使用洗牌名单的来源。
UnsupportedOperationException
-如果指定列表或列表迭代器不支持
set操作。
public static void swap(List<?> list, int i, int j)
list
中交换元素列表。
i
-一个元素被交换的指标。
j
-其他元素被交换的指标。
IndexOutOfBoundsException
-如果
i或
j超出范围(i<0 | |我> =列表。size() | | J<0 | | J > =列表。size())。
public static <T> void fill(List<? super T> list, T obj)
该方法在线性时间内运行。
T
的对象列表中的类
list
-列表来充满指定元素。
obj
-该元素来填充指定的列表。
UnsupportedOperationException
-如果指定列表或列表迭代器不支持
set操作。
public static <T> void copy(List<? super T> dest, List<? extends T> src)
该方法在线性时间内运行。
T
的对象列表中的类
dest
-目的地列表。
src
-源列表。
IndexOutOfBoundsException
-如果目标列表太小,包含完整的源列表。
UnsupportedOperationException
-如果目标列表的列表迭代器不支持
set操作。
public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)
此方法遍历整个集合,因此它需要时间来集合的大小成正比。
T
的对象集合中的类
coll
-集合的最小元素是确定的。
ClassCastException
-如果托收包含不相互比较元素(例如,字符串和整数)。
NoSuchElementException
-如果集合是空的。
Comparable
public static <T> T min(Collection<? extends T> coll, Comparator<? super T> comp)
此方法遍历整个集合,因此它需要时间来集合的大小成正比。
T
的对象集合中的类
coll
-集合的最小元素是确定的。
comp
与比较器来确定最小元。一个
null值表示元素的自然排序应使用。
ClassCastException
-如果托收包含不相互比较使用指定的比较器元件。
NoSuchElementException
-如果集合是空的。
Comparable
public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
此方法遍历整个集合,因此它需要时间来集合的大小成正比。
T
的对象集合中的类
coll
-集合的最大元素是确定的。
ClassCastException
-如果托收包含不相互比较元素(例如,字符串和整数)。
NoSuchElementException
-如果集合是空的。
Comparable
public static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp)
此方法遍历整个集合,因此它需要时间来集合的大小成正比。
T
的对象集合中的类
coll
-集合的最大元素是确定的。
comp
与比较器确定最大元。一个
null值表示元素的自然排序应使用。
ClassCastException
-如果托收包含不相互比较使用指定的比较器元件。
NoSuchElementException
-如果集合是空的。
Comparable
public static void rotate(List<?> list, int distance)
例如,假设list comprises [t, a, n, k, s]。即使Collections.rotate(list, 1)(或Collections.rotate(list, -4)),list将包括[s, t, a, n, k]。
请注意,此方法可以有效地应用到子表,将一个或多个元素在一个列表的同时保留剩余的元素的顺序。例如,下列成语动作元素在指数j前进到位置k(必须大于或等于j):
收藏。旋转(列表。列表(J,K + 1),1);使混凝土,想 list包括 [a, b, c, d, e]。移动单元在指数 1( b)提出了两个位置,执行下面的调用:
收藏。旋转(l.sublist(1,4),1);结果列表 [a, c, d, b, e]。
要移动不止一个元素,增加旋转距离的绝对值。要向后移动元素,使用正移距离。
如果指定的列表很小或实施RandomAccess
接口,实现交流的第一个元素到它应该去的位置,然后反复交流流离失所的元素到它应该去到一个流离失所的元素交换到第一个元素的位置。如果必要的话,在第二个和连续的元素上重复这个过程,直到旋转完成。如果指定的列表是大和不执行RandomAccess接口,实现将列表分成两个子列表视图在指数-distance mod size。然后reverse(List)
方法对每一个子列表视图调用,最后是对整个列表调用。一个更完整的算法描述,看到Jon Bentley的编程珠玑第2.3(Addison Wesley,1986)。
list
-列表被旋转。
distance
-旋转表的距离。在这个价值没有约束的;它可能是零,负的,或大于
list.size()。
UnsupportedOperationException
-如果指定列表或列表迭代器不支持
set操作。
public static <T> boolean replaceAll(List<T> list, T oldVal, T newVal)
T
的对象列表中的类
list
-列表更换发生。
oldVal
将取代旧的价值。
newVal
-这
oldVal要更换新的价值。
UnsupportedOperationException
-如果指定列表或列表迭代器不支持
set操作。
public static int indexOfSubList(List<?> source, List<?> target)
source.subList(i, i+target.size()).equals(target)
,或1,如果没有这样的指标。(返回1如果
target.size() > source.size()
)
本实现使用“蛮力”扫描在源列表中的扫描技术,寻找一个与目标在每个位置的匹配。
source
-在列表中寻找
target第一次发生。
target
-列表搜索作为一个列表,
source。
public static int lastIndexOfSubList(List<?> source, List<?> target)
source.subList(i, i+target.size()).equals(target)
,或1,如果没有这样的指标。(返回1如果
target.size() > source.size()
)
该实现使用“蛮力”在源列表迭代技术,寻找一个依次在每个位置的目标匹配。
source
-在列表中寻找
target最后出现。
target
-列表搜索作为一个列表,
source。
public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c)
返回的集合是不通过hashCode和等于操作通过对支持收藏,但依靠Object的equals和hashCode方法。这是必要的,以保存这些操作的合同的情况下,备份集合是一个集合或列表。
返回的集合将如果指定集合序列化是可串行化。
T
的对象集合中的类
c
-集合为一个不可修改的观点是要归还。
public static <T> Set<T> unmodifiableSet(Set<? extends T> s)
返回的集合如果指定的序列化是可串行化。
结果。T
的对象集合中的类
s
-设置为一个不可修改的观点是要归还。
public static <T> SortedSet<T> unmodifiableSortedSet(SortedSet<T> s)
返回排序集将如果指定的排序集序列化是可串行化。
T
的对象集合中的类
s
-排序的一个不可修改的观点是要归还。
public static <T> NavigableSet<T> unmodifiableNavigableSet(NavigableSet<T> s)
subSet
,
headSet
,或
tailSet
视图,在一个
UnsupportedOperationException
结果。
返回的通航将如果指定通航设置序列化是可串行化。
T
的对象集合中的类
s
-设置为一个不可修改的视图导航要返回
public static <T> List<T> unmodifiableList(List<? extends T> list)
返回的列表如果指定列表序列化是可串行化。同样,返回的列表实现RandomAccess
如果指定的名单中。
T
的对象列表中的类
list
-列表中一个不可修改的观点是要归还。
public static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m)
返回的Map,如果指定的Map是可序列化是可串行化。
结果。K
Map的关键类
V
Map的价值类
m
-Map上一个不可修改的观点是要归还。
public static <K,V> SortedMap<K,V> unmodifiableSortedMap(SortedMap<K,? extends V> m)
返回排序图将如果指定的排序图是可序列化序列化。
K
Map的关键类
V
Map的价值类
m
-排序的Map上一个不可修改的观点是要归还。
public static <K,V> NavigableMap<K,V> unmodifiableNavigableMap(NavigableMap<K,? extends V> m)
subMap
,
headMap
,或
tailMap
视图,在一个
UnsupportedOperationException
结果。
返回的导航电子Map将如果指定的导航电子Map是可序列化序列化。
K
Map的关键类
V
Map的价值类
m
-导航电子Map的一个不可修改的观点是要归还
public static <T> Collection<T> synchronizedCollection(Collection<T> c)
至关重要的是,用户手动同步遍历返回的集合时,它通过Iterator
,Spliterator
或Stream
:
收集C =集合。synchronizedcollection(我的);…同步(c)迭代器我= C();//必须在同步块而(我hasnext())foo(即next());}未能遵循这个建议可能导致不确定的行为。
返回的集合是不通过hashCode
和equals
操作通过对支持收藏,但依靠Object
的equals和hashCode方法。这是必要的,以保存这些操作的合同的情况下,备份集合是一个集合或列表。
返回的集合将如果指定集合序列化是可串行化。
T
的对象集合中的类
c
-集合是“包裹”在一个同步采集。
public static <T> Set<T> synchronizedSet(Set<T> s)
至关重要的是,用户手动同步,在返回时设置遍历它:
集的集合。synchronizedset(新hashset());…同步(s)迭代器我= S();//必须在同步块而(我hasnext())foo(即next());}未能遵循这个建议可能导致不确定的行为。
返回的集合如果指定的序列化是可串行化。
T
的对象集合中的类
s
-设置为“缠”在同步设置。
public static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s)
至关重要的是,用户手动同步返回排序集当遍历它或它的任何subSet,headSet,或tailSet观点。
SortedSet s =集合。synchronizedsortedset(新treeset());…同步(s)迭代器我= S();//必须在同步块而(我hasnext())foo(即next());}或:
SortedSet s =集合。synchronizedsortedset(新treeset());SortedSet S2 = s.headset(Foo);…同步(s){ //注:S2的,不!!!迭代器我= S2。();//必须在同步块而(我hasnext())foo(即next());}未能遵循这个建议可能导致不确定的行为。
返回排序集将如果指定的排序集序列化是可串行化。
T
的对象集合中的类
s
-排序是“包裹”在一个同步的有序集合。
public static <T> NavigableSet<T> synchronizedNavigableSet(NavigableSet<T> s)
至关重要的是,用户手动同步返回的通航时,遍历它或它的任何subSet
,headSet
,或tailSet
观点。
navigableset =集合。synchronizednavigableset(新treeset());…同步(s)迭代器我= S();//必须在同步块而(我hasnext())foo(即next());}或:
navigableset =集合。synchronizednavigableset(新treeset());navigableset S2 = s.headset(Foo,真的);…同步(s){ //注:S2的,不!!!迭代器我= S2。();//必须在同步块而(我hasnext())foo(即next());}未能遵循这个建议可能导致不确定的行为。
返回的通航将如果指定通航设置序列化是可串行化。
T
的对象集合中的类
s
-是“包裹”在一个同步的通航通航集集
public static <T> List<T> synchronizedList(List<T> list)
至关重要的是,用户手动同步返回列表遍历它时:
列表的集合。synchronizedlist(新arraylist());…同步(列表)迭代器我=清单。();//必须同步块而(我hasnext())foo(即next());}未能遵循这个建议可能导致不确定的行为。
返回的列表如果指定列表序列化是可串行化。
T
的对象列表中的类
list
的名单是“缠”在同步列表。
public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m)
至关重要的是,用户手动同步返回的Map时,遍历其任何集合视图:
MapM =集合。synchronizedmap(新hashmap());…集合S = M keyset();/ /不必在同步块…同步(M){ / /同步对M,而不是!迭代器我= S();//必须同步块而(我hasnext())foo(即next());}未能遵循这个建议可能导致不确定的行为。
返回的Map,如果指定的Map是可序列化是可串行化。
K
Map的关键类
V
Map的价值类
m
-Map被“包裹”在一个同步的Map。
public static <K,V> SortedMap<K,V> synchronizedSortedMap(SortedMap<K,V> m)
至关重要的是,用户手动同步时返回排序图遍历其任何集合视图,或集合视图的任何subMap,headMap或tailMap观点。
M =集合建模。synchronizedsortedmap(新treemap());…集合S = M keyset();/ /不必在同步块…同步(M){ / /同步对M,而不是!迭代器我= S();//必须同步块而(我hasnext())foo(即next());}或:
M =集合建模。synchronizedsortedmap(新treemap());M2 = m.submap建模(foo,bar);…集合S2 =平方米。keyset();/ /不必在同步块…同步(M){ //同步的M,不是M2、S2!迭代器我= S();//必须同步块而(我hasnext())foo(即next());}未能遵循这个建议可能导致不确定的行为。
返回排序图将如果指定的排序图是可序列化序列化。
K
Map的关键类
V
Map的价值类
m
-排序图是“包裹”在一个同步的排序图。
public static <K,V> NavigableMap<K,V> synchronizedNavigableMap(NavigableMap<K,V> m)
至关重要的是,用户手动同步返回导航电子Map当遍历其任何集合视图,或集合视图的任何subMap
,headMap
或tailMap
观点。
navigablemap M =集合。synchronizednavigablemap(新treemap());…集合S = M keyset();/ /不必在同步块…同步(M){ / /同步对M,而不是!迭代器我= S();//必须同步块而(我hasnext())foo(即next());}或:
navigablemap M =集合。synchronizednavigablemap(新treemap());navigablemap M2 = m.submap(Foo,真的,酒吧,假);…集合S2 =平方米。keyset();/ /不必在同步块…同步(M){ //同步的M,不是M2、S2!迭代器我= S();//必须同步块而(我hasnext())foo(即next());}未能遵循这个建议可能导致不确定的行为。
返回的导航电子Map将如果指定的导航电子Map是可序列化序列化。
K
Map的关键类
V
Map的价值类
m
-是“包裹”在一个同步的导航电子Map的导航电子Map
public static <E> Collection<E> checkedCollection(Collection<E> c, 类<E> type)
ClassCastException
。假设一个集合不包含错误类型的元素的时候产生一个动态类型安全的观点之前,和所有后续访问集合的发生通过视图,它是放心,集合不能包含一个错误类型的元素。
在语言中的泛型机制提供了编译时(静态)类型检查,但它是可能的,以击败这种机制与未检查的转换。通常这不是一个问题,因为编译器会在所有未检查的操作上发出警告。有,但是,当静态类型检查单独是不足够的。例如,假设一个集合被传递给第三方库,并且必须通过插入错误类型的元素来对集合进行不损坏的库代码。
动态类型安全的观点的另一个用途是调试。假设一个程序的失败有一个ClassCastException
,指示一个错误类型的元素被放进了一个参数化的集合。不幸的是,在插入错误元素后的任何时候都会发生异常,所以它通常只提供很少或根本没有问题的真正来源的信息。如果问题是重复的,可以迅速通过临时修改程序与动态类型安全的集合视图将确定其来源。例如,这个声明:
Collection<String> c = new HashSet<>();
可能暂时被这一替代:
Collection<String> c = Collections.checkedCollection(
new HashSet<>(), String.class);
运行程序又会导致它失败的地方的错误类型的元素插入到集合中,清楚地确定问题的根源。一旦问题是固定的,修改后的声明可能会恢复到原来的。
返回的集合是不通过hashCode和等于操作通过对支持收藏,但依靠Object
的equals
和hashCode
方法。这是必要的,以保存这些操作的合同的情况下,备份集合是一个集合或列表。
返回的集合将如果指定集合序列化是可串行化。
因为null
被认为是一个价值的任何类型的引用,返回的集合允许插入null元素时收集不支持。
E
的对象集合中的类
c
-集合的动态类型安全的观点是要归还
type
,
c
允许持有单元类型
public static <E> Queue<E> checkedQueue(Queue<E> queue, 类<E> type)
ClassCastException
。假设一个队列不包含错误类型的元素的时候产生一个动态类型安全的观点之前,和所有后续访问队列发生通过视图,它是放心,队列中不能包含一个错误类型的元素。
一种动态类型安全的使用意见,讨论可能的checkedCollection
方法的文档中找到的。
返回队列,如果指定的队列序列化是可串行化。
因为null
被认为是一个价值的任何类型的引用,返回队列中允许插入元素时null
队列不支持。
E
-对象队列中的类
queue
-队列的动态类型安全的观点是要归还
type
,
queue
允许持有单元类型
public static <E> Set<E> checkedSet(Set<E> s, 类<E> type)
ClassCastException
。假设一个集合不包含错误类型的元素的时候产生一个动态类型安全的观点之前,和所有后续访问的设置是通过视图,它是放心,集不能包含一个错误类型的元素。
一种动态类型安全的使用意见,讨论可能的checkedCollection
方法的文档中找到的。
返回的集合如果指定的序列化是可串行化。
因为null
被认为是一个价值的任何类型的引用,返回的集合允许插入null元素时设置不支持。
E
的对象集合中的类
s
-设置为动态类型安全的观点是要归还
type
,
s
允许持有单元类型
public static <E> SortedSet<E> checkedSortedSet(SortedSet<E> s, 类<E> type)
ClassCastException
。假设一个有序集合不包含错误类型的元素的时候产生一个动态类型安全的观点之前,和所有后续访问的排序发生通过视图,它是放心,排序集不能包含一个错误类型的元素。
一种动态类型安全的使用意见,讨论可能的checkedCollection
方法的文档中找到的。
返回排序集将如果指定的排序集序列化是可串行化。
因为null
被认为是一个价值的任何类型的引用,返回排序集允许插入null元素时不支持排序。
E
的对象集合中的类
s
-排序,动态类型安全的观点是要归还
type
,
s
允许持有单元类型
public static <E> NavigableSet<E> checkedNavigableSet(NavigableSet<E> s, 类<E> type)
ClassCastException
。假设一个通航集不包含错误类型的元素的时候产生一个动态类型安全的观点之前,和所有后续访问的导航设置是通过视图,这是保证通航集不能包含一个错误类型的元素。
一种动态类型安全的使用意见,讨论可能的checkedCollection
方法的文档中找到的。
返回的通航将如果指定通航设置序列化是可串行化。
因为null
被认为是一个价值的任何类型的引用,返回的通航设置允许插入null元素时不支持排序。
E
的对象集合中的类
s
-通航设置为动态类型安全的观点是要归还
type
,
s
允许持有单元类型
public static <E> List<E> checkedList(List<E> list, 类<E> type)
ClassCastException
。假设一个列表不包含错误类型的元素的时候产生一个动态类型安全的观点之前,和所有后续的访问列表是通过视图,它是放心,列表不能包含一个错误类型的元素。
一种动态类型安全的使用意见,讨论可能的checkedCollection
方法的文档中找到的。
返回的列表如果指定列表序列化是可串行化。
因为null
被认为是一个价值的任何类型的引用,返回列表允许插入null元素时,不支持列表。
E
的对象列表中的类
list
-列表中动态类型安全的观点是要归还
type
,
list
允许持有单元类型
public static <K,V> Map<K,V> checkedMap(Map<K,V> m, 类<K> keyType, 类<V> valueType)
ClassCastException
。同样,任何试图修改的值与当前相关会导致立即
ClassCastException
是否修改,尝试直接通过Map本身,或从Map的
entry set
观点得到
Map.Entry
实例。
假设一个Map不包含错误类型的键或值时产生一个动态类型安全的观点之前,和所有后续访问的Map是通过视图(或它的一个集合视图),它是放心,Map不能包含不正确的键或值。
一种动态类型安全的使用意见,讨论可能的checkedCollection
方法的文档中找到的。
返回的Map,如果指定的Map是可序列化是可串行化。
因为null
被认为是一个价值的任何类型的引用,返回Map允许插入空键或值时不支持Map。
K
Map的关键类
V
Map的价值类
m
-Map,动态类型安全的观点是要归还
keyType
-重点,
m
允许持有型
valueType
,
m
允许持有价值型
public static <K,V> SortedMap<K,V> checkedSortedMap(SortedMap<K,V> m, 类<K> keyType, 类<V> valueType)
ClassCastException
。同样,任何试图修改的值与当前相关会导致立即
ClassCastException
是否修改,尝试直接通过Map本身,或从Map的
entry set
观点得到
Map.Entry
实例。
假设一个Map不包含错误类型的键或值时产生一个动态类型安全的观点之前,和所有后续访问的Map是通过视图(或它的一个集合视图),它是放心,Map不能包含不正确的键或值。
一种动态类型安全的使用意见,讨论可能的checkedCollection
方法的文档中找到的。
返回的Map,如果指定的Map是可序列化是可串行化。
因为null
被认为是一个价值的任何类型的引用,返回Map允许插入空键或值时不支持Map。
K
Map的关键类
V
Map的价值类
m
-Map,动态类型安全的观点是要归还
keyType
-重点,
m
允许持有型
valueType
,
m
允许持有价值型
public static <K,V> NavigableMap<K,V> checkedNavigableMap(NavigableMap<K,V> m, 类<K> keyType, 类<V> valueType)
ClassCastException
。同样,任何试图修改的值与当前相关会导致立即
ClassCastException
是否修改,尝试直接通过Map本身,或从Map的
entry set
观点得到
Map.Entry
实例。
假设一个Map不包含错误类型的键或值时产生一个动态类型安全的观点之前,和所有后续访问的Map是通过视图(或它的一个集合视图),它是保证Map不能包含不正确的键或值。
一种动态类型安全的使用意见,讨论可能的checkedCollection
方法的文档中找到的。
返回的Map,如果指定的Map是可序列化是可串行化。
因为null
被认为是一个价值的任何类型的引用,返回Map允许插入空键或值时不支持Map。
K
-Map键型
V
-映射值类型
m
-Map,动态类型安全的观点是要归还
keyType
-重点,
m
允许持有型
valueType
,
m
允许持有价值型
public static <T> Iterator<T> emptyIterator()
hasNext
总是返回false
。next
总是NoSuchElementException
。remove
总是IllegalStateException
。此方法的实现是允许的,但不是必需的,返回多个调用同一个对象。
T
型元素,如果有,在迭代器
public static <T> ListIterator<T> emptyListIterator()
hasNext
和hasPrevious
总是返回false
。next
和previous
总是把NoSuchElementException
。remove
和set
总是把IllegalStateException
。add
总是UnsupportedOperationException
。nextIndex
总是返回0
。previousIndex
总是返回-1
。此方法的实现是允许的,但不是必需的,返回多个调用同一个对象。
T
型元素,如果有,在迭代器
public static <T> Enumeration<T> emptyEnumeration()
hasMoreElements
总是返回false
。nextElement
总是NoSuchElementException
。此方法的实现是允许的,但不是必需的,返回多个调用同一个对象。
T
-对象的枚举中的类
public static final <T> Set<T> emptySet()
这个例子说明了类型安全的方法来获得一个空集:
<字符串> 设置的集合。emptyset(); 字符串>
Set
对象。使用这种方法很可能有类似的成本,使用类似命名字段。(不像这种方法,字段不提供类型安全。)
T
的对象集合中的类
EMPTY_SET
public static <E> SortedSet<E> emptySortedSet()
这个例子说明了类型安全的方法来获得一个空的排序集:
SortedSet<String> s = Collections.emptySortedSet();
SortedSet
对象。
E
型元素,如果有,在集
public static <E> NavigableSet<E> emptyNavigableSet()
这个例子说明了类型安全的方式来获得一个空的导航集:
NavigableSet<String> s = Collections.emptyNavigableSet();
NavigableSet
对象。
E
型元素,如果有,在集
public static final <T> List<T> emptyList()
这个例子说明了类型安全的方法来获得一个空列表:
列表 <字符串> emptylist()的集合; 字符串>实施注:此方法的实现不需要为每次调用创建一个单独的 List对象。使用这种方法很可能有类似的成本,使用类似命名字段。(不像这种方法,字段不提供类型安全。)
T
型元素,如果有,在列表中
EMPTY_LIST
public static final <K,V> Map<K,V> emptyMap()
这个例子说明了类型安全的方法来获得一个空的Map:
图 <字符串、日期> 的emptymap()收藏; 字符串、日期>
Map
对象。使用这种方法很可能有类似的成本,使用类似命名字段。(不像这种方法,字段不提供类型安全。)
K
Map的关键类
V
Map的价值类
EMPTY_MAP
public static final <K,V> SortedMap<K,V> emptySortedMap()
这个例子说明了类型安全的方法来获得一个空的Map:
SortedMap<String, Date> s = Collections.emptySortedMap();
SortedMap
对象。
K
Map的关键类
V
Map的价值类
public static final <K,V> NavigableMap<K,V> emptyNavigableMap()
这个例子说明了类型安全的方法来获得一个空的Map:
NavigableMap<String, Date> s = Collections.emptyNavigableMap();
NavigableMap
对象。
K
Map的关键类
V
Map的价值类
public static <T> Set<T> singleton(T o)
T
的对象集合中的类
o
-被存储在返回的唯一对象。
public static <T> List<T> singletonList(T o)
T
的对象列表中的类
o
-被存储在返回列表中的唯一目标。
public static <K,V> Map<K,V> singletonMap(K key, V value)
K
Map的关键类
V
Map的价值类
key
-被存储在返回Map的唯一关键。
value
的值,返回MapMap
key。
public static <T> List<T> nCopies(int n, T o)
T
-类对象复制的对象返回列表。
n
-在返回列表中的元素数。
o
-元素在返回列表中多次出现。
n < 0
IllegalArgumentException
List.addAll(Collection)
,
List.addAll(int, Collection)
public static <T> Comparator<T> reverseOrder()
Comparable
界面对象的自然顺序相反。(自然顺序排序的对象自身的
compareTo
方法。实施)这使一个简单的成语进行分类(或维持)的集合(或数组),实现
Comparable
界面反自然秩序的对象。例如,假设
a
是字符串数组。然后:
阵列。排序(A,集合。reverseorder());类反向字典数组(字母)顺序。
返回的比较器可序列化。
T
-类的对象进行比较
Comparable
public static <T> Comparator<T> reverseOrder(Comparator<T> cmp)
null
,此方法等效于
reverseOrder()
(换句话说,它返回一个比较器施加在一个集合,实现Comparable接口对象的自然顺序相反)。
返回的比较器可序列化(假设指定的比较器也可序列化或null
)。
T
-类的对象进行比较
cmp
-比较器谁的排序是由返回的比较器或
null
逆转
public static <T> Enumeration<T> enumeration(Collection<T> c)
T
的对象集合中的类
c
-集合的枚举返回。
Enumeration
public static <T> ArrayList<T> list(Enumeration<T> e)
T
-类的对象返回的枚举
e
枚举提供返回的数组列表元素
Enumeration
,
ArrayList
public static int frequency(Collection<?> c, Object o)
c
-其中的收集确定
o频率
o
的频率来确定对象
c
等于
o
元素个数
NullPointerException
-如果
c是空的
public static boolean disjoint(Collection<?> c1, Collection<?> c2)
true
如果两个指定集合没有共同的元素。
必须注意如果这种方法用于收藏,不符合Collection
一般合同。实现可以遍历集合和在其他的收集容器测试(或执行任何等效计算)。如果收集使用一个非平等测试(作为一个SortedSet
的顺序不等于不兼容,或一个IdentityHashMap
键设置),都必须使用相同的标准集合相等测试,或这种方法的结果是不确定的。
使用对它们可能包含的元素有限制的集合时,也必须小心行使。采集的实现是允许把任何他们认为不合格的操作异常涉及的元素。对于绝对安全,指定的集合应该包含只有两个集合的符合条件的元素的元素。
值得注意的是,它允许在参数传递相同的集合,在这种情况下,该方法将当且仅当集合为空返回true
。
c1
-集合
c2
-集合
true
如果两个指定集合没有共同的元素。
NullPointerException
-如果集合是
null
。
NullPointerException
-如果一个集合包含
null
元和
null
不是另一个合格的元素集合。(
optional)
ClassCastException
-如果一个集合包含一个元素,一种是不适合其他收集。(
optional)
@SafeVarargs public static <T> boolean addAll(Collection<? super T> c, T... elements)
当元素被单独指定时,该方法提供了一个方便的方式来添加一些元素到一个现有的集合中:
集合。所有(口味,“桃子”N钚”、“Rocky Racoon”);
T
-要添加的元素和集合类
c
-收集到
elements要插入
elements
-插入的元素
c
UnsupportedOperationException
-如果
c不支持
add操作
NullPointerException
-如果
elements包含一个或多个空值和
c不允许null元素,或者如果
c或
elements是
null
IllegalArgumentException
-如果一个价值
elements一些物业阻止其加入
c
Collection.addAll(Collection)
public static <E> Set<E> newSetFromMap(Map<E,Boolean> map)
Map
实施
Set
实施。没有必要用这种方法在
Map
实施已经有相应的
Set
实施(如
HashMap
或
TreeMap
)。
用这种方法的结果是一个方法调用的支持Map或其keySet视图返回的集合中的每个方法调用,有一个例外。的addAll方法是依托Map的序列put调用的实现。
指定的映射必须是空的,在这个方法被调用的时候,不应该在这个方法返回后直接访问。这些条件是确保如果映射创建空的,直接传递到这个方法,并没有引用到Map被保留,如下面的代码片段所示:
集 <对象> weakhashset =集合。newsetfrommap(新<< WeakHashMap对象,布尔>()); 对象>
E
-类Map键和对象返回的集合
map
-支持Map
IllegalArgumentException
-如果
map不是空的
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.