教程 > guava 教程 > 阅读:28

guava ordering 类——迹忆客-ag捕鱼王app官网

ordering 可以看作是一个丰富的比较器,具有增强的链接功能、多种实用方法、多类型排序能力等。


类声明

以下是 com.google.common.collect.ordering 类的声明

@gwtcompatible
public abstract class ordering
   extends object
      implements comparator

类方法

序号 方法 说明
1 static ordering 返回将所有值视为相等的排序,表示“无排序”。 将此排序传递给任何稳定的排序算法都不会改变元素的顺序。
2 static ordering 返回所有对象的任意排序,其中 compare(a, b) == 0 意味着 a == b(身份相等)。
3 int binarysearch(list sortedlist, t key) 使用二进制搜索算法在 sortedlist 中搜索键。
4 abstract int compare(t left, t right) 比较其两个参数的顺序。
5 ordering compound(comparator secondarycomparator) 返回一个排序,它首先使用排序 this,但在“tie”的情况下,然后委托给 secondarycomparator。
6 static ordering compound(iterable> comparators) 返回一个顺序,它按顺序尝试每个给定的比较器,直到找到非零结果,返回该结果,并且仅当所有比较器都返回零时才返回零。
7 static ordering explicit(list valuesinorder) 返回根据对象在给定列表中出现的顺序比较对象的顺序。
8 static ordering explicit(t leastvalue, t... remainingvaluesinorder) 返回一个排序,该排序根据将对象提供给此方法的顺序来比较对象。
9 static ordering from(comparator comparator) 返回基于现有比较器实例的排序。
10 list greatestof(iterable iterable, int k) 根据此顺序返回给定 iterable 的 k 个最大元素,按从大到小的顺序排列。
11 list greatestof(iterator iterator, int k) 根据此顺序从给定的迭代器返回 k 个最大的元素,从大到小。
12 immutablelist immutablesortedcopy(iterable elements) 返回一个不可变列表,其中包含按此顺序排序的元素。
13 boolean isordered(iterable iterable) 根据此顺序,如果 iterable 中第一个元素之后的每个元素都大于或等于它之前的元素,则返回 true。
14 boolean isstrictlyordered(iterable iterable) 根据此顺序,如果 iterable 中第一个元素之后的每个元素都严格大于它之前的元素,则返回 true
15 list leastof(iterable iterable, int k) 根据此顺序返回给定 iterable 的 k 个最少元素,按从小到大的顺序排列。
16 list leastof(iterator elements, int k) 根据此顺序从给定的迭代器返回 k 个最少的元素,从最小到最大的顺序。
17 ordering> lexicographical() 返回一个新的排序,它通过成对比较相应的元素来对可迭代对象进行排序,直到找到非零结果; 强加“字典顺序”。
18 e max(e a, e b) 根据此排序返回两个值中的较大者。
19 e max(e a, e b, e c, e... rest) 根据此排序返回指定值中的最大值。
20 e max(iterable iterable) 根据此排序返回指定值中的最大值。
21 e max(iterator iterator) 根据此排序返回指定值中的最大值。
22 e min(e a, e b) 根据此排序返回两个值中的较小者。
23 e min(e a, e b, e c, e... rest) 根据此排序返回指定值中的最小值。
24 e min(iterable iterable) 根据此排序返回指定值中的最小值。
25 e min(iterator iterator) 根据此排序返回指定值中的最小值。
26 static ordering natural() 返回使用值的自然顺序的可序列化排序。
27 ordering nullsfirst() 返回将 null 视为小于所有其他值的排序,并使用它来比较非 null 值。
28 ordering nullslast() 返回将 null 视为大于所有其他值的排序,并使用此排序来比较非 null 值。
29 ordering onresultof(function function) 返回 f 上的新排序,它通过首先对元素应用一个函数来排序元素,然后使用它比较这些结果。
30 ordering reverse() 返回此顺序的相反顺序; 相当于 collections.reverseorder(comparator) 的 ordering。
31 list sortedcopy(iterable elements) 返回一个可变列表,其中包含按此顺序排序的元素; 仅当结果列表可能需要进一步修改或可能包含 null 时才使用它。
32 static ordering 返回一个排序,该排序通过 tostring() 返回的字符串表示的自然排序来比较对象。

方法继承

该类继承了以下类的方法 -

  • java.lang.object

ordering 类示例

c:/> guava 中使用我们选择的任何编辑器创建以下 java 程序。

guavatester.java

import java.util.arraylist;
import java.util.collections;
import java.util.list;
import com.google.common.collect.ordering;
public class guavatester {
   public static void main(string args[]) {
      list numbers = new arraylist();
      
      numbers.add(new integer(5));
      numbers.add(new integer(2));
      numbers.add(new integer(15));
      numbers.add(new integer(51));
      numbers.add(new integer(53));
      numbers.add(new integer(35));
      numbers.add(new integer(45));
      numbers.add(new integer(32));
      numbers.add(new integer(43));
      numbers.add(new integer(16));
      ordering ordering = ordering.natural();
      system.out.println("input list: ");
      system.out.println(numbers);        
         
      collections.sort(numbers,ordering );
      system.out.println("sorted list: ");
      system.out.println(numbers);
         
      system.out.println("======================");
      system.out.println("list is sorted: "   ordering.isordered(numbers));
      system.out.println("minimum: "   ordering.min(numbers));
      system.out.println("maximum: "   ordering.max(numbers));
         
      collections.sort(numbers,ordering.reverse());
      system.out.println("reverse: "   numbers);
      numbers.add(null);
      system.out.println("null added to sorted list: ");
      system.out.println(numbers);        
      collections.sort(numbers,ordering.nullsfirst());
      system.out.println("null first sorted list: ");
      system.out.println(numbers);
      system.out.println("======================");
      list names = new arraylist();
      
      names.add("ram");
      names.add("shyam");
      names.add("mohan");
      names.add("sohan");
      names.add("ramesh");
      names.add("suresh");
      names.add("naresh");
      names.add("mahesh");
      names.add(null);
      names.add("vikas");
      names.add("deepak");
      system.out.println("another list: ");
      system.out.println(names);
      collections.sort(names,ordering.nullsfirst().reverse());
      system.out.println("null first then reverse sorted list: ");
      system.out.println(names);
   }
}

验证结果

使用 javac 编译器编译类,如下所示

c:\guava>javac guavatester.java

现在运行 guavatester 以查看结果。

c:\guava>java guavatester

结果如下

input list: 
[5, 2, 15, 51, 53, 35, 45, 32, 43, 16]
sorted list: 
[2, 5, 15, 16, 32, 35, 43, 45, 51, 53]
======================
list is sorted: true
minimum: 2
maximum: 53
reverse: [53, 51, 45, 43, 35, 32, 16, 15, 5, 2]
null added to sorted list: 
[53, 51, 45, 43, 35, 32, 16, 15, 5, 2, null]
null first sorted list: 
[null, 2, 5, 15, 16, 32, 35, 43, 45, 51, 53]
======================
another list: 
[ram, shyam, mohan, sohan, ramesh, suresh, naresh, mahesh, null, vikas, deepak]
null first then reverse sorted list: 
[vikas, suresh, sohan, shyam, ramesh, ram, naresh, mohan, mahesh, deepak, null]

查看笔记

扫码一下
查看教程更方便
网站地图