1、功能介绍
Ordering是Google开发的Comparator实现类,它可以构建比较复杂的比较器,用来实现集合的排序功能。
2、使用示例
|
3、常用方法
1)、获取实例对象
获取实例对象基本有四种方式
- natural() 获取自然排序的ordering对象;
- usingToString() 获取“按对象的字符串形式做字典排序”的ordering对象;
- from(Comparator) 把给定的Comparator(实现类)转化为排序器;
- 直接new Ordering:
Ordering<String> byLengthOrdering = new Ordering<String>() {
public int compare(String left, String right) {
return Ints.compare(left.length(), right.length());}};
2)、链式调用方法
链式方式可以对实例进行一系列的运算,简化代码量,提高效率。
- reverse() 获取语义相反的排序器
- nullsFirst() 使用当前排序器,但额外把null值排到最前面。
- nullsLast() 使用当前排序器,但额外把null值排到最后面。
- compound(Comparator) 合成另一个比较器,以处理当前排序器中的相等情况。
- lexicographical() 基于处理类型T的排序器,返回该类型的可迭代对象Iterable<T>的排序器。
- onResultOf(Function) 对集合中元素调用Function,再按返回值用当前排序器排序。
当阅读链式调用产生的排序器时,应该从后往前读。当用到compound方法包装排序器时,
就不应遵循从后往前读的原则。为了避免理解上的混乱,应该在链中最先或最后调用compound。
3)、排序方法
以下方法可以得到一个排序后的集合。
- greatestOf(Iterable iterable, int k) 获取可迭代对象中最大的k个元素。
- isOrdered(Iterable) 判断可迭代对象是否已按排序器排序:允许有排序值相等的元素。
- sortedCopy(Iterable) 判断可迭代对象是否已严格按排序器排序:不允许排序值相等的元素。
- min(E, E) 返回两个参数中最小的那个。如果相等,则返回第一个参数。
- min(E, E, E, E...) 返回多个参数中最小的那个。如果有超过一个参数都最小,则返回第一个最小的参数。
- min(Iterable) 返回迭代器中最小的元素。如果可迭代对象中没有元素,则抛出NoSuchElementException。