订购类 |番石榴 |Java
比较器,具有支持常见操作的其他方法。这是 Comparator 的“丰富”版本。获取 Ordering 实例的常用方法是:
- 子类化它并实现 compare(T, T) 而不是直接实现 Comparator 。
- 将预先存在的 Comparator 实例传递给 from(Comparator)。
- 使用自然排序,natural()。
声明: com.google.common.collect.Ordering< T >类的声明是:
@GwtCompatible
public abstract class Ordering
extends Object
implements Comparator
下面给出的是 Guava 的 Ordering Class 提供的一些方法:
Ordering() :这是 Guava 的 Ordering 类的构造函数。它构造这个类的一个新实例(只能由子类构造函数调用,通常是隐式的)。该类提供的其他一些方法是:
例外:
- 显式(列出 valuesInOrder):如果提供的任何值为 null,则为NullPointerException ;如果 valuesInOrder 包含任何重复值,则为IllegalArgumentException 。
- explicit(T leastValue, T... remainingValuesInOrder) :如果提供的任何值为 null,则为NullPointerException ,如果有任何重复值,则为IllegalArgumentException 。
- min(Iterator iterator) : NoSuchElementException如果迭代器为空, ClassCastException如果参数在此排序下不能相互比较。
- min(Iterable iterable) : NoSuchElementException如果 iterable 为空, ClassCastException如果参数在此排序下不能相互比较。
- min(E a, E b) : ClassCastException如果在此排序下参数不能相互比较。
- min(E a, E b, E c, E... rest) : ClassCastException如果在此顺序下参数不能相互比较。
- max(Iterator iterator) : NoSuchElementException如果迭代器为空, ClassCastException如果参数在此排序下不能相互比较。
- max(Iterable iterable) : NoSuchElementException如果 iterable 为空, ClassCastException如果参数在此排序下不能相互比较。
- max(E a, E b) : ClassCastException如果在此排序下参数不能相互比较。
- max(E a, E b, E c, E... rest) : ClassCastException如果在此顺序下参数不能相互比较。
- leastOf(Iterable iterable, int k): IllegalArgumentException如果 k 为负数。
- minimumOf(Iterator elements, int k) :如果 k 为负数,则出现IllegalArgumentException 。
- bestOf(Iterable iterable, int k): IllegalArgumentException如果 k 为负数。
- bestOf(Iterator elements, int k) : IllegalArgumentException如果 k 为负数。
- immutableSortedCopy : NullPointerException如果任何元素(或元素本身)为空。
此类提供的其他一些方法是:
示例 1:
// Java code to show implementation of
// Ordering class
import java.util.*;
import com.google.common.collect.Ordering;
class GFG {
// Driver code
public static void main(String args[])
{
// Creating a list of Integers
List myList = new ArrayList();
myList.add(new Integer(12));
myList.add(new Integer(3));
myList.add(new Integer(78));
myList.add(new Integer(50));
myList.add(new Integer(6));
myList.add(new Integer(70));
myList.add(new Integer(18));
myList.add(new Integer(9));
myList.add(new Integer(10));
// Displaying natural order of numbers
Ordering ordering = Ordering.natural();
System.out.println("Input List : " + myList);
// Displaying the sorted list
Collections.sort(myList, ordering);
System.out.println("Sorted List : " + myList);
}
}
输出 :
Input List : [12, 3, 78, 50, 6, 70, 18, 9, 10]
Sorted List : [3, 6, 9, 10, 12, 18, 50, 70, 78]
下面给出了 Guava 的 Ordering Class 提供的一些其他方法:
示例 2:
// Java code to show implementation of
// Ordering class
import java.util.*;
import com.google.common.collect.Ordering;
class GFG {
// Driver code
public static void main(String args[])
{
// Creating a list of Integers
List myList = new ArrayList();
myList.add(new Integer(12));
myList.add(new Integer(3));
myList.add(new Integer(78));
myList.add(new Integer(50));
myList.add(new Integer(6));
myList.add(new Integer(70));
myList.add(new Integer(18));
myList.add(new Integer(9));
myList.add(new Integer(10));
// Displaying natural order of numbers
Ordering ordering = Ordering.natural();
System.out.println("Minimum element is : " + ordering.min(myList));
}
}
输出 :
Minimum element is : 3
示例 3:
// Java code to show implementation of
// Ordering class
import java.util.*;
import com.google.common.collect.Ordering;
class GFG {
// Driver code
public static void main(String args[])
{
// Creating a list of Integers
List myList = new ArrayList();
myList.add(new Integer(12));
myList.add(new Integer(3));
myList.add(new Integer(78));
myList.add(new Integer(50));
myList.add(new Integer(6));
myList.add(new Integer(70));
myList.add(new Integer(18));
myList.add(new Integer(9));
myList.add(new Integer(10));
// Displaying natural order of numbers
Ordering ordering = Ordering.natural();
System.out.println("Maximum element is : " + ordering.max(myList));
}
}
输出 :
Maximum element is : 78
示例 4:
// Java code to show implementation of
// Ordering class
import java.util.*;
import com.google.common.collect.Ordering;
class GFG {
// Driver code
public static void main(String args[])
{
// Creating a list of Integers
List myList = new ArrayList();
myList.add(new Integer(12));
myList.add(new Integer(3));
myList.add(new Integer(78));
myList.add(new Integer(50));
myList.add(new Integer(6));
myList.add(new Integer(70));
myList.add(new Integer(18));
myList.add(new Integer(9));
myList.add(new Integer(10));
// Displaying natural order of numbers
Ordering ordering = Ordering.natural();
// To get reverse of original list
Collections.sort(myList, ordering.reverse());
// Displaying the reversed elements
System.out.println(myList);
}
}
输出 :
[78, 70, 50, 18, 12, 10, 9, 6, 3]
参考:谷歌番石榴