zoukankan      html  css  js  c++  java
  • [个人原创]关于java中对象排序的一些探讨(三)

    这篇文章由十八子将原创,转载请注明,并标明博客地址:http://www.cnblogs.com/shibazijiang/

    对对象排序也可以使用Guava中的Ordering类。

    构造Ordering类,可以使用直接实现Ordering类中comparator方法,也可以由from()方法传入一个比较器,具体可以参考Guava文档。

     1 package Test;
     2 
     3 import com.google.common.base.Function;
     4 import com.google.common.collect.Ordering;
     5 
     6 import java.util.ArrayList;
     7 import java.util.Comparator;
     8 import java.util.List;
     9 
    10 /**
    11  * Created By IntelliJ IDEA
    12  * User:LeeShuai
    13  * Date:3/6/14
    14  * Time:9:29 PM
    15  */
    16 class Person {
    17     private  String name;
    18     private  int age;
    19 
    20     //构造器
    21     public Person() {
    22     }
    23 
    24     public Person(String name, int age) {
    25         this.setAge(age);
    26         this.setName(name);
    27     }
    28 
    29     public int getAge() {
    30         return age;
    31     }
    32 
    33     public void setAge(int age) {
    34         this.age = age;
    35     }
    36 
    37 
    38     public String getName() {
    39         return name;
    40     }
    41 
    42     public void setName(String name) {
    43         this.name = name;
    44     }
    45 
    46 }
    47 public class OrderingTest {
    48     public static void main(String[] args) {
    49 
    50         //直接实现抽象类
    51       Ordering<Person> ordering=new Ordering<Person>() {
    52           @Override
    53           public int compare(Person o1,Person o2) {
    54              return o2.getAge()>o1.getAge()? 1:(o2.getAge()<o1.getAge()?
    55                      -1:(o2.getName().compareTo(o1.getName())));
    56           }
    57       };
    58 
    59         //由一个比较器实现
    60         Ordering<Person> ordering1=Ordering.from(new Comparator<Person>() {
    61             @Override
    62             public int compare(Person o1, Person o2) {
    63                 return o2.getAge()>o1.getAge()? 1:(o2.getAge()<o1.getAge()?
    64                         -1:(o2.getName().compareTo(o1.getName())));
    65 
    66             }
    67         });
    68         //带函数参数的Ordering
    69             Ordering<Person> ordering2=Ordering.from(new Comparator<String>() {
    70             @Override
    71             public int compare(String o1, String o2) {
    72                 return o2.compareTo(o1);
    73             }
    74         }).onResultOf(new Function<Person, String>() {
    75             @Override
    76             public String apply(Person person) {
    77                 return person.getName();
    78             }
    79         });
    80 
    81         List<Person> list=new ArrayList<Person>();
    82         list.add(new Person("a", 24));
    83         list.add(new Person("b", 23));
    84         list.add(new Person("c", 22));
    85         list.add(new Person("d", 21));
    86         list.add(new Person("e", 20));
    87         list.add(new Person("f", 19));
    88 
    89         ordering2.sortedCopy(list);
    90         for(Person person:list){
    91             System.out.println(person.getName()+":"+person.getAge ());
    92         }
    93 
    94     }
    95 
    96 }

    输出结果不再给出。

  • 相关阅读:
    jqGrid表格控件的学习
    list 集合筛选数据
    MySQL跨域
    11-Index页面
    11-Comment页面
    11-Add页面
    11-UploadFile
    11-控制器UI
    11-控制器
    11-数据访问层
  • 原文地址:https://www.cnblogs.com/shibazijiang/p/3586347.html
Copyright © 2011-2022 走看看