📜  订购类 |番石榴 |Java

📅  最后修改于: 2022-05-13 01:54:44.803000             🧑  作者: Mango

订购类 |番石榴 |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]

参考:谷歌番石榴