Java集合之Collections工具类
public class Collections extends Object
-
此类仅包含对collection 进行操作或返回collection 的静态方法。 它包含对collection 进行操作的多态算法、“包装器”,它返回由指定collection 支持的新collection ,以及其他一些零碎的东西。
-
如果提供给它们的collection 或类对象为空 null,则此类的方法都将抛出 NullPointerException。
-
此类中包含的多态算法的文档通常包括对实现的简要说明。 此类描述应视为实现说明,而不是规范的一部分。 只要遵守规范本身,实现者应该可以随意替换其他算法。 (例如,sort 使用的算法不一定是归并排序,但它必须是稳定的。)
-
该类中包含的“破坏性”算法,即修改它们操作的collection 的算法, 如果collection 不支持适当的变异原语,例如 set 方法,则指定抛出 UnsupportedOperationException。 如果调用对collection 没有影响,则这些算法可能(但不是必需)抛出此异常。 例如,对已排序的不可修改列表调用 sort 方法可能会也可能不会抛出 UnsupportedOperationException。
字段
Modifier and Type | Field | Description |
---|---|---|
static List | EMPTY_LIST | 空列表(不可变)。 |
static Map | EMPTY_MAP | 空地图(immutable)。 |
static Set | EMPTY_SET | 空集(不可变)。 |
方法
Modifier and Type | Method | Description |
---|---|---|
static boolean | addAll(Collection<? super T> c, T… elements) | 将所有指定的元素添加到指定的集合。 |
static Queue | asLifoQueue(Deque deque) | 返回Deque作为先进先出(Lifo)Queue的视图。 |
static int | binarySearch(List<? extends Comparable<? super T>> list, T key) | 使用二叉搜索算法搜索指定对象的指定列表。 |
static int | binarySearch(List<? extends T> list, T key, Comparator<? super T> c) | 使用二叉搜索算法搜索指定对象的指定列表。 |
static Collection | checkedCollection(Collection c, Class type) | 返回指定集合的动态类型安全视图。 |
static List | checkedList(List list, Class type) | 返回指定列表的动态类型安全视图。 |
static <K,V> Map<K,V> | checkedMap(Map<K,V> m, Class keyType, Class valueType) | 返回指定地图的动态类型安全视图。 |
static <K,V> NavigableMap<K,V> | checkedNavigableMap(NavigableMap<K,V> 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 <K,V> SortedMap<K,V> | checkedSortedMap(SortedMap<K,V> m, Class keyType, Class valueType) | 返回指定排序映射的动态类型安全视图。 |
static SortedSet | checkedSortedSet(SortedSet s, Class type) | 返回指定排序集的动态类型安全视图。 |
static void | copy(List<? super T> dest, List<? extends T> src) | 将所有元素从一个列表复制到另一个列表中。 |
static boolean | disjoint(Collection<?> c1, Collection<?> c2) | 如果两个指定的集合没有共同的元素,则返回 true 。 |
static Enumeration | emptyEnumeration() | 返回没有元素的枚举。 |
static Iterator | emptyIterator() | 返回没有元素的迭代器。 |
static List | emptyList() | 返回空列表(不可变的)。 |
static ListIterator | emptyListIterator() | 返回没有元素的列表迭代器。 |
static <K,V> Map<K,V> | emptyMap() | 返回空的地图(不可变)。 |
static <K,V> NavigableMap<K,V> | emptyNavigableMap() | 返回空导航地图(不可变)。 |
static NavigableSet | emptyNavigableSet() | 返回一个空导航集(不可变的)。 |
static Set | emptySet() | 返回一个空集(不可变的)。 |
static <K,V> SortedMap<K,V> | emptySortedMap() | 返回空的排序映射(不可变的)。 |
static SortedSet | emptySortedSet() | 返回一个空的排序集(不可变的)。 |
static Enumeration | enumeration(Collection c) | 返回指定集合的枚举。 |
static 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 ArrayList | list(Enumeration e) | 返回一个数组列表,其中包含由枚举返回的顺序由指定的枚举返回的元素。 |
static <T extends Object & Comparable<? super T>>T | max(Collection<? extends T> coll) | 根据其元素的 自然顺序返回给定集合的最大元素。 |
static T | max(Collection<? extends T> coll, Comparator<? super T> comp) | 根据指定的比较器引发的顺序返回给定集合的最大元素。 |
static <T extends Object & Comparable<? super T>>T | min(Collection<? extends T> coll) | 根据其元素的 自然顺序返回给定集合的最小元素。 |
static T | min(Collection<? extends T> coll, Comparator<? super T> comp) | 根据指定的比较器引发的顺序返回给定集合的最小元素。 |
static List | nCopies(int n, T o) | 返回由指定对象的 n副本组成的不可变列表。 |
static Set | newSetFromMap(Map<E,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 <K,V> Map<K,V> | singletonMap(K key, V value) | 返回一个不可变的地图,只将指定的键映射到指定的值。 |
static <T extends Comparable<? super T>>void | sort(List list) | 根据其元素的natural ordering对指定的列表进行排序。 |
static void | sort(List list, Comparator<? super T> c) | 根据指定的比较器引起的顺序对指定的列表进行排序。 |
static void | swap(List<?> list, int i, int j) | 交换指定列表中指定位置的元素。 |
static Collection | synchronizedCollection(Collection c) | 返回由指定集合支持的同步(线程安全)集合。 |
static List | synchronizedList(List list) | 返回由指定列表支持的同步(线程安全)列表。 |
static <K,V> Map<K,V> | synchronizedMap(Map<K,V> m) | 返回由指定地图支持的同步(线程安全)映射。 |
static <K,V> NavigableMap<K,V> | synchronizedNavigableMap(NavigableMap<K,V> m) | 返回由指定的可导航地图支持的同步(线程安全)可导航地图。 |
static NavigableSet | synchronizedNavigableSet(NavigableSet s) | 返回由指定的可导航集支持的同步(线程安全)可导航集。 |
static Set | synchronizedSet(Set s) | 返回由指定集合支持的同步(线程安全)集。 |
static <K,V> SortedMap<K,V> | synchronizedSortedMap(SortedMap<K,V> m) | 返回由指定的排序映射支持的同步(线程安全)排序映射。 |
static SortedSet | synchronizedSortedSet(SortedSet s) | 返回由指定的排序集支持的同步(线程安全)排序集。 |
static Collection | unmodifiableCollection(Collection<? extends T> c) | 返回指定集合的不可修改视图。 |
static List | 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) | 返回指定可导航地图的不可修改视图。 |
static NavigableSet | unmodifiableNavigableSet(NavigableSet s) | 返回指定的可导航集合的不可修改的视图。 |
static Set | unmodifiableSet(Set<? extends T> s) | 返回指定集合的不可修改视图。 |
static <K,V> SortedMap<K,V> | unmodifiableSortedMap(SortedMap<K,? extends V> m) | 返回指定排序映射的不可修改视图。 |
static SortedSet | unmodifiableSortedSet(SortedSet s) | 返回指定排序集的不可修改视图。 |
常用方法
添加addAll:
ArrayList<String> list = new ArrayList<>();
list.add("cc");
list.add("bb");
list.add("aa");
Collections.addAll(list,"ee","dd","ff");
Collections.addAll(list,new String[]{"gg","ii","hh"});
System.out.println(list); //[cc, bb, aa, ee, dd, ff, gg, ii, hh]
binarySearch必须在有序的集合中查找,先排序:
Collections.sort(list);//sort提供的是升序排列
System.out.println(list); //[aa, bb, cc, dd, ee, ff, gg, hh, ii]
//binarySearch
System.out.println(Collections.binarySearch(list, "cc")); //2
copy:替换方法
ArrayList<String> list2 = new ArrayList<>();
Collections.addAll(list2,"tt","ss");
Collections.copy(list,list2);//将list2的内容替换到list上去
System.out.println(list);//[tt, ss, cc, dd, ee, ff, gg, hh, ii]
System.out.println(list2); //[tt, ss]
fill 填充
Collections.fill(list2,"yyy");
System.out.println(list2); //[yyy, yyy]