[个人原创]关于java中对象排序的一些探讨(三)
这篇文章由十八子将原创,转载请注明,并标明博客地址: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 ());
} } }
输出结果不再给出。
[个人原创]关于java中对象排序的一些探讨(三)的更多相关文章
- [个人原创]关于java中对象排序的一些探讨(一)
有的时候我们需要将自己定义的对象,有序输出.因为一般我们程序的中间结果需要存储在容器里,那么怎样对容器中的对象按照一定次序输出就是程序员经常需要考虑的问题.本片文章探讨了怎样有序化输出容器中的对象的问 ...
- [个人原创]关于java中对象排序的一些探讨(二)
2. 使用Collections.sort()方法 Collections类中提供了诸多静态方法,诸如addAll(),max()等等.当自己相对Collection接口下的类处理的时候,可以看看这 ...
- Comparable与Comparator,java中的排序与比较
1:比较和排序的概念 比较:两个实体类之间按>,=,<进行比较. 排序:在集合类中,对集合类中的实体进行排序.排序基于的算法基于实体类提供的比较函数. 基本型别都提供了默认的比较算法,如s ...
- Java中对象的生与灭- 核心篇
前言 大家好啊,我是汤圆,今天给大家带来的是<Java中对象的生与灭- 核心篇>,希望对大家有帮助,谢谢 文章纯属原创,个人总结难免有差错,如果有,麻烦在评论区回复或后台私信,谢啦 简介 ...
- Java中的排序算法(2)
Java中的排序算法(2) * 快速排序 * 快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为两个子序列(sub-lists). * 步骤为: * 1. 从数 ...
- Java中对象的深复制和浅复制详解
1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. ⑵ ...
- java 中对象比较大小
java 中对象比较大小 java 中对象比较大小有两种方法 1:实现Comparable 接口 的 public int compareTo(T o) 方法: 2:实现Comparator 接口 的 ...
- Java中对象、对象引用、堆、栈、值传递以及引用传递的详解
Java中对象.对象引用.堆.栈.值传递以及引用传递的详解 1.对象和对象引用的差别: (1).对象: 万物皆对象.对象是类的实例. 在Java中new是用来在堆上创建对象用的. 一个对象能够被多个引 ...
- Java中对象流使用的一个注意事项
再写jsp的实验作业的时候,需要用到java中对象流,但是碰到了之前没有遇到过的情况,改bug改到崩溃!!记录下来供大家分享 如果要用对象流去读取一个文件,一定要先判断这个文件的内容是否为空,如果为空 ...
随机推荐
- 如何开发Android Wear应用程序
Android Wear是连接安卓手机和可穿戴产品的一个平台.自从今年上半年发布以来,Android Wear获得了大量关注,既有来自消费者的关注,也有来自开发商的关注,后者希望自己的应用程序已经准备 ...
- window7 64位安装Python
Python下载地址:https://www.python.org/download/releases/2.7.8/ 选择64位的安装,然后双击打开下载的文件,默认一步步安装. 其中有一个步骤如下图: ...
- 后缀自动机(SAM):SPOJ Longest Common Substring II
Longest Common Substring II Time Limit: 2000ms Memory Limit: 262144KB A string is finite sequence of ...
- C#:ref和out的联系及区别
一:ref 关键字使参数按引用传递. 其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中.若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字. ...
- [转载][HTML] 普通的DIV分层以及版透明效果
来源忘记哪的了,我稍微做了点修改,想了想还是挂了转载的标签,嗯嗯: <html> <head> <title>EXAMPLE</title> </ ...
- UVAlive2531 The K-League(最大流)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=33451 [思路] 最大流. 大体思路是枚举每个队伍,最大流判断是否 ...
- MySQL客户端执行外部sql文件命令
客户端 source d:\bbs.sql 或者 \. d:\bbs.sql
- Java中基本数据类型和包装器类型的关系
在程序设计中经常用到一系列的数据类型,在Java中也一样包含八中数据类型,这八种数据类型又各自对应一种包装器类型.如下表: 基本类型 包装器类型 boolean Boolean char Charac ...
- Unable to locate the Javac Compiler 解决办法
在使用eclipse对maven项目进行编译打包(Run As->Maven install)时,报以下错误:[ERROR] Failed to execute goal org.apache. ...
- 每天进步一点点——Linux
http://blog.csdn.net/cywosp/article/category/443566/1