世上只有一种善,那就是知识,也只有一种恶,那就是无知
——苏格拉底《文明》
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 接口,后者的泛型定义很有意思,我们来看下