您的位置:首页 > 编程语言 > Java开发

[个人原创]关于java中对象排序的一些探讨(三)

2014-03-07 14:15 204 查看
这篇文章由十八子将原创,转载请注明,并标明博客地址:http://www.cnblogs.com/shibazijiang/

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

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

package Test;

import com.google.common.base.Function;
import com.google.common.collect.Ordering;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

/**
* Created By IntelliJ IDEA
* User:LeeShuai
* Date:3/6/14
* Time:9:29 PM
*/
class Person {
private  String name;
private  int age;

//构造器
public Person() {
}

public Person(String name, int age) {
this.setAge(age);
this.setName(name);
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

}
public class OrderingTest {
public static void main(String[] args) {

//直接实现抽象类
Ordering<Person> ordering=new Ordering<Person>() {
@Override
public int compare(Person o1,Person o2) {
return o2.getAge()>o1.getAge()? 1:(o2.getAge()<o1.getAge()?
-1:(o2.getName().compareTo(o1.getName())));
}
};

//由一个比较器实现
Ordering<Person> ordering1=Ordering.from(new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
return o2.getAge()>o1.getAge()? 1:(o2.getAge()<o1.getAge()?
-1:(o2.getName().compareTo(o1.getName())));

}
});
//带函数参数的Ordering
Ordering<Person> ordering2=Ordering.from(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o2.compareTo(o1);
}
}).onResultOf(new Function<Person, String>() {
@Override
public String apply(Person person) {
return person.getName();
}
});

List<Person> list=new ArrayList<Person>();
list.add(new Person("a", 24));
list.add(new Person("b", 23));
list.add(new Person("c", 22));
list.add(new Person("d", 21));
list.add(new Person("e", 20));
list.add(new Person("f", 19));

ordering2.sortedCopy(list);
for(Person person:list){
System.out.println(person.getName()+":"+person.getAge ());
}

}

}


输出结果不再给出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐