世上只有一种善,那就是知识,也只有一种恶,那就是无知
——苏格拉底《文明》

0 前言

Collections 同样位于java.util包中,是为了方便集合的使用而诞生的工具类。

。它提供了一系列静态方法,能更方便地操作各种集合。

  • 如果该类的方法引用的集合或类对象为null,会抛 NullPointerException。
  • 该类还有破坏性(destructive),也就是说,如果调用了集合不支持的方法,它会抛 UnsupportedOperationException。
  • 包含多态算法,利用 wrappers(包装器)返回指定集合类型的新集合
  • 其他一些小功能。

注意Collections结尾多了一个s,不是Collection!

废话不多说,看常用源码.

1 addAll


可以给一个Collection类型的集合添加若干元素。因为方法签名是Collection,所以我们可以传入List,Set等各种集合类型。

2 sort

底层使用的其实就是 Arrays.sort 方法

3 binarySearch

自己重写了二分查找算法,实现的思想和 Arrays 的二分查找算法完全一致,这两个方法上 Collections 和 Arrays 的内部实现很类似,不赘述。

4 最值

提供了 max 方法来取得集合中的最大值,min 方法来取得集合中的最小值,max 和 min 方法很相似的

我们以 min 方法为例来说明一下,min 提供了两种类型的方法

  • 需要传外部排序器

  • 不需要传排序器,但需要集合中的元素强制实现 Comparable 接口,后者的泛型定义很有意思,我们来看下