Guava Ordering排序類使用
阿新 • • 發佈:2018-12-11
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。