Guava学习——Ordering类

Ordering是guava的一个排序类
有很多排序方法 个人觉得非空值排序和寻找最值真的是太方便了!

//类的声明
@GwtCompatible
public abstract class Ordering<T>
   extends Object
      implements Comparator<T>

几个好用的方法:

//搜索排序列表使用键的二进制搜索算法。
int binarySearch(List<? extends T> sortedList, T key)
//是否升序
boolean isOrdered(Iterable<? extends T> iterable) 
//最值
<E extends T> E max(E a, E b)
<E extends T> E max(E a, E b, E c, E... rest)
<E extends T> E max(Iterable<E> iterable)
<E extends T> E max(Iterator<E> iterator)
<E extends T> E min(E a, E b)
<E extends T> E min(E a, E b, E c, E... rest)
<E extends T> E min(Iterable<E> iterable)
<E extends T> E min(Iterator<E> iterator)
//返回实例
static <C extends Comparable> Ordering<C> natural()
//返回对待null小于所有其他值,并使用此来比较非空值排序。
<S extends T> Ordering<S> nullsFirst()
//返回对待null作为大于所有其他值,并使用这个顺序来比较非空值排序<S extends T> Ordering<S> nullsLast()
//返回相反顺序; 顺序相当于Collections.reverseOrder(Comparator)。
<S extends T> Ordering<S> reverse()

//测试

package guavaDome;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import com.google.common.collect.Ordering;

public class GuavaDome {
     public static void main(String args[]){
         List<Integer> numbers = new ArrayList<Integer>();
          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);
          System.out.println("++++++++++");
          ordering= Ordering.allEqual();
          System.out.println("++++++++++");
          Collections.sort(numbers);
          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("explicit "+ 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);
          System.out.println("List is sorted: " + ordering.isOrdered(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<String> names = new ArrayList<String>();
          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);

       }



}

测试结果

Input List: 
[5, 2, 15, 51, 53, 35, 45, 32, 43, 16]
++++++++++
++++++++++
[2, 5, 15, 16, 32, 35, 43, 45, 51, 53]
Sorted List: 
[2, 5, 15, 16, 32, 35, 43, 45, 51, 53]
======================
List is sorted: true
explicit [2, 5, 15, 16, 32, 35, 43, 45, 51, 53]
Minimum: 2
Maximum: 2
Reverse: [2, 5, 15, 16, 32, 35, 43, 45, 51, 53]
List is sorted: true
Null added to Sorted List: 
[2, 5, 15, 16, 32, 35, 43, 45, 51, 53, 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: 
[Ram, Shyam, Mohan, Sohan, Ramesh, Suresh, Naresh, Mahesh, Vikas, Deepak, null]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值