浅谈Java Comparator用法
2015-10-13 10:48
489 查看
会用Java Comparator会给编程带来很多方便,特别是自定义的对象的排序,至少不用每次都去自己写排序算法,特别是做OJ的时候,时间有限,更加来不及。
1.使用Comparator首先要实现一个自定义的比较器的类,该类必须实现Comparator接口。
下面的Comparator实现了一个根据MyObject的weight,升序排序的比较器
降序只需要将返回-1与1的语句颠倒就行。
2.调用Collections.sort(待排序集合, 比较器)进行排序。
完整代码:
1.使用Comparator首先要实现一个自定义的比较器的类,该类必须实现Comparator接口。
下面的Comparator实现了一个根据MyObject的weight,升序排序的比较器
class MyCP implements Comparator<MyObject>{ @Override public int compare(MyObject sp1, MyObject sp2){ if(sp1.weight < sp2.weight){ return -1; } else if(sp1.weight == sp2.weight){ return 0; } return 1; } }
降序只需要将返回-1与1的语句颠倒就行。
2.调用Collections.sort(待排序集合, 比较器)进行排序。
完整代码:
import java.util.*;输出为: 0 1 2 3 4 5.
public class Solution {
public static void main(String[] args){
ArrayList<MyObject> ali = new ArrayList<MyObject>();
ali.add(new MyObject(5));
ali.add(new MyObject(4));
ali.add(new MyObject(3));
ali.add(new MyObject(2));
ali.add(new MyObject(1));
ali.add(new MyObject(0));
Collections.sort(ali, new MyCP());
for(int i = 0; i < ali.size(); i++){
System.out.println(ali.get(i).weight);
}
}
}
class MyCP implements Comparator<MyObject>{ @Override public int compare(MyObject sp1, MyObject sp2){ if(sp1.weight < sp2.weight){ return -1; } else if(sp1.weight == sp2.weight){ return 0; } return 1; } }
class MyObject{
int weight;
MyObject(int w){
weight = w;
}
}
相关文章推荐
- 下列代码可以实现把Java的CST格式的时间字符串转为为Date对象和所需要的日期时间格式!
- Exception in thread “main” javax.xml.bind.JAXBException: Provider com.sun.xml.bind.v2.ContextFactory
- Java同步容器和并发容器
- saiku2.5源码myeclipse部署出现的一个问题
- 【第五节】Java代码实现链表
- JDBC(Java Database Connection) 教程
- java创建对象的四种方式
- 公共技术点之 Java 注解 Annotation
- 一个经典例子让你彻彻底底理解java回调机制
- java判断是否是周末
- [Java]Spring入门
- java里面的treemap与HashMap
- eclipse 中progect build target 列表为空的问题
- java初始化(static)总结
- spring使用TransactionProxyFactoryBean配置事务
- 关于java中父类引用子类实例化的问题
- JAVA DATE类型推断尺寸数据比较法
- [收藏]Spring入门视频教程:Introduction to Spring
- ES006-Elasticsearch-JAVA客户端
- Myeclipse8.5 反编译插件 jad 安装