在学数组的时候,JDK为我们提供了一个Arrays类,该类提供了许多静态方法来操作数组。
同时针对集合类也提供了一个Collections类,同样也提供了许多静态方法来对集合进行操作。
Collection 和Collections的区别:
java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。
java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。
Collections提供的方法分类:
空集合
Collections.EMPTY_LIST,Collections.emptyList()——返回只读的空LIST 集合
Collections.EMPTY_MAP,Collections.emptyMap()——返回只读的空MAP集合
Collections.EMPTY_SET,Collections.emptySet()返回只读的空SET集合
所谓的空集合指的是没有元素在这些集合中,特别需要注意的是返回的集合都是只读的。当尝试修改时会抛出UnsupportedOperationException异常。
单元素集合
Collections中的单元素集合指的是集合只有一个元素而且集合只读。
Collections.singletonList——用来生成只读的单一元素的List
Collections.singletonMap——用来生成只读的单Key和Value组成的Map
Collections.singleton——用来生成只读的单一元素的Set
只读集合
Collections提供了几种生成只读集合的方法:unmodifiableCollection,unmodifiableList,unmodifiableMap,unmodifiableSet,unmodifiableSortedMap,unmodifiableSortedSet。这些集合一旦初始化以后就不能修改,任何修改这些集合的方法都会抛出UnsupportedOperationException异常。
Checked集合(Checked Collections)
Checked集合具有检查插入集合元素类型的特性,例如当我们设定checkedList中元素的类型是String的时候,如果插入其他类型的元素就会抛出ClassCastExceptions异常,Java5中提供泛型的功能,泛型功能能够在代码编译阶段就约束集合中元素的类型,但有些时候声明的集合可能是raw集合,编译阶段的类型约束就不起作用了,这个时候Checked集合就能起到约束集合中元素类型的作用。
Collections中提供了以下生成Checked集合的方法checkedCollection,checkedList,checkedMap,checkedSet,checkedSortedMap,checkedSortedSet
同步集合(Synchronized Collections)
Collections的synchronizedXxxxx系列方法顾名思义会返回同步化集合类(SynchronizedMap,SynchronizedList等等)。这些集合类内部实现都是通过一个mutex(互斥体)来实现对这些集合操作的同步化。
Enumeration接口
从JDK1.0开始Java就提供了Enumeration 接口。Collections中list和enumeration和Enumeration接口相关。
list(Enumeration<T> e) 方法用于有Enumeration接口中产生一个List
enumeration(Collection<T> c) 方法用于基于Collection返回Enumeration。
查找替换
fill——使用指定元素替换指定列表中的所有元素。
frequency——返回指定 collection 中等于指定对象的元素数。
indexOfSubList—— 返回指定源列表中第一次出现指定目标列表的起始位置,如果没有出现这样的列表,则返回 -1。
lastIndexOfSubList——返回指定源列表中最后一次出现指定目标列表的起始位置,如果没有出现这样的列表,则返回-1。
max—— 根据元素的自然顺序,返回给定 collection 的最大元素。
min——根据元素的自然顺序 返回给定 collection 的最小元素。
replaceAll——使用另一个值替换列表中出现的所有某一指定值。
集合排序
Collections还提供了集中对集合进行排序的方法。
reverse——对List中的元素倒序排列
shuffle——对List中的元素随机排列
sort——对List中的元素排序
swap——交换List中某两个指定下标位元素在集合中的位置。
rotate——根据指定的距离轮换指定列表中的元素。
其他方法
binarySearch——使用二进制搜索算法来搜索指定列表,以获得指定对象。
addAll——将所有指定元素添加到指定 collection 中。
copy——将所有元素从一个列表复制到另一个列表。
disjoint——如果两个指定 collection 中没有相同的元素,则返回 true。
nCopies——返回由指定对象的 n 个副本组成的不可变列表。