Java集合之Collections工具类

75 篇文章 2 订阅
这篇博客详细介绍了Java中的Collections工具类,包括其提供的各种静态方法,如addAll、binarySearch、checked*、copy、disjoint、empty*、fill、frequency、sort等。Collections工具类用于操作和转换集合,提供了类型安全、线程安全和不可变的视图。此外,还讨论了如何使用这些方法来实现集合的排序、复制、填充和转换等常见操作。
摘要由CSDN通过智能技术生成

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 TypeFieldDescription
static ListEMPTY_LIST空列表(不可变)。
static MapEMPTY_MAP空地图(immutable)。
static SetEMPTY_SET空集(不可变)。

方法

Modifier and TypeMethodDescription
static booleanaddAll(Collection<? super T> c, T… elements)将所有指定的元素添加到指定的集合。
static QueueasLifoQueue(Deque deque)返回Deque作为先进先出(Lifo)Queue的视图。
static intbinarySearch(List<? extends Comparable<? super T>> list, T key)使用二叉搜索算法搜索指定对象的指定列表。
static intbinarySearch(List<? extends T> list, T key, Comparator<? super T> c)使用二叉搜索算法搜索指定对象的指定列表。
static CollectioncheckedCollection(Collection c, Class type)返回指定集合的动态类型安全视图。
static ListcheckedList(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 NavigableSetcheckedNavigableSet(NavigableSet s, Class type)返回指定的可导航集的动态类型安全视图。
static QueuecheckedQueue(Queue queue, Class type)返回指定队列的动态类型安全视图。
static SetcheckedSet(Set s, Class type)返回指定集合的动态类型安全视图。
static <K,V> SortedMap<K,V>checkedSortedMap(SortedMap<K,V> m, Class keyType, Class valueType)返回指定排序映射的动态类型安全视图。
static SortedSetcheckedSortedSet(SortedSet s, Class type)返回指定排序集的动态类型安全视图。
static voidcopy(List<? super T> dest, List<? extends T> src)将所有元素从一个列表复制到另一个列表中。
static booleandisjoint(Collection<?> c1, Collection<?> c2)如果两个指定的集合没有共同的元素,则返回 true 。
static EnumerationemptyEnumeration()返回没有元素的枚举。
static IteratoremptyIterator()返回没有元素的迭代器。
static ListemptyList()返回空列表(不可变的)。
static ListIteratoremptyListIterator()返回没有元素的列表迭代器。
static <K,V> Map<K,V>emptyMap()返回空的地图(不可变)。
static <K,V> NavigableMap<K,V>emptyNavigableMap()返回空导航地图(不可变)。
static NavigableSetemptyNavigableSet()返回一个空导航集(不可变的)。
static SetemptySet()返回一个空集(不可变的)。
static <K,V> SortedMap<K,V>emptySortedMap()返回空的排序映射(不可变的)。
static SortedSetemptySortedSet()返回一个空的排序集(不可变的)。
static Enumerationenumeration(Collection c)返回指定集合的枚举。
static voidfill(List<? super T> list, T obj)用指定的元素代替指定列表的所有元素。
static intfrequency(Collection<?> c, Object o)返回指定集合中与指定对象相等的元素数。
static intindexOfSubList(List<?> source, List<?> target)返回指定源列表中指定目标列表的第一次出现的起始位置,如果没有此类事件,则返回-1。
static intlastIndexOfSubList(List<?> source, List<?> target)返回指定源列表中指定目标列表的最后一次出现的起始位置,如果没有此类事件则返回-1。
static ArrayListlist(Enumeration e)返回一个数组列表,其中包含由枚举返回的顺序由指定的枚举返回的元素。
static <T extends Object & Comparable<? super T>>Tmax(Collection<? extends T> coll)根据其元素的 自然顺序返回给定集合的最大元素。
static Tmax(Collection<? extends T> coll, Comparator<? super T> comp)根据指定的比较器引发的顺序返回给定集合的最大元素。
static <T extends Object & Comparable<? super T>>Tmin(Collection<? extends T> coll)根据其元素的 自然顺序返回给定集合的最小元素。
static Tmin(Collection<? extends T> coll, Comparator<? super T> comp)根据指定的比较器引发的顺序返回给定集合的最小元素。
static ListnCopies(int n, T o)返回由指定对象的 n副本组成的不可变列表。
static SetnewSetFromMap(Map<E,Boolean> map)返回由指定地图支持的集合。
static booleanreplaceAll(List list, T oldVal, T newVal)将列表中一个指定值的所有出现替换为另一个。
static voidreverse(List<?> list)反转指定列表中元素的顺序。
static ComparatorreverseOrder()返回一个比较器,它对实现 Comparable接口的对象集合施加了 自然排序的相反。
static ComparatorreverseOrder(Comparator cmp)返回一个比较器,它强制指定比较器的反向排序。
static voidrotate(List<?> list, int distance)将指定列表中的元素旋转指定的距离。
static voidshuffle(List<?> list)使用默认的随机源随机排列指定的列表。
static voidshuffle(List<?> list, Random rnd)使用指定的随机源随机排列指定的列表。
static Setsingleton(T o)返回一个只包含指定对象的不可变集。
static ListsingletonList(T o)返回一个只包含指定对象的不可变列表。
static <K,V> Map<K,V>singletonMap(K key, V value)返回一个不可变的地图,只将指定的键映射到指定的值。
static <T extends Comparable<? super T>>voidsort(List list)根据其元素的natural ordering对指定的列表进行排序。
static voidsort(List list, Comparator<? super T> c)根据指定的比较器引起的顺序对指定的列表进行排序。
static voidswap(List<?> list, int i, int j)交换指定列表中指定位置的元素。
static CollectionsynchronizedCollection(Collection c)返回由指定集合支持的同步(线程安全)集合。
static ListsynchronizedList(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 NavigableSetsynchronizedNavigableSet(NavigableSet s)返回由指定的可导航集支持的同步(线程安全)可导航集。
static SetsynchronizedSet(Set s)返回由指定集合支持的同步(线程安全)集。
static <K,V> SortedMap<K,V>synchronizedSortedMap(SortedMap<K,V> m)返回由指定的排序映射支持的同步(线程安全)排序映射。
static SortedSetsynchronizedSortedSet(SortedSet s)返回由指定的排序集支持的同步(线程安全)排序集。
static CollectionunmodifiableCollection(Collection<? extends T> c)返回指定集合的不可修改视图。
static ListunmodifiableList(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 NavigableSetunmodifiableNavigableSet(NavigableSet s)返回指定的可导航集合的不可修改的视图。
static SetunmodifiableSet(Set<? extends T> s)返回指定集合的不可修改视图。
static <K,V> SortedMap<K,V>unmodifiableSortedMap(SortedMap<K,? extends V> m)返回指定排序映射的不可修改视图。
static SortedSetunmodifiableSortedSet(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]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SK Primin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值