回归基础(Java比较器)
2016-02-22 17:29
465 查看
又到下班时间了,投入进代码的世界总是感觉时间过得很快,与其感叹时间流逝不如踏踏实实做事,高速运转一天了,写个简单的集合排序实例回归基础吧。
对集合进行排序大家应该都会想到Collections类中的静态方法sort(), 对于List<String> list =new ArrayList<String>(); 我们可以直接使用Collections.sort(list)进行排序,排序规则可以查看String类的源码,String 实现了Comparable接口并覆盖了compareTo()方法,所以它的排序规划是按字典顺序排序的。如果我们自定义的类要按照某种规则进行排序的话,有两种方法,一种是类似String类实现了Comparable接口并覆盖了compareTo()方法,直接使用Collections.sort(list)。还有一种方法是自定义一个比较器类实现Comparator接口并覆盖compare方法,在这个方法中按自己的需求编写排序规划,如:
一个比较器,按这个比较规划排序。
对集合进行排序大家应该都会想到Collections类中的静态方法sort(), 对于List<String> list =new ArrayList<String>(); 我们可以直接使用Collections.sort(list)进行排序,排序规则可以查看String类的源码,String 实现了Comparable接口并覆盖了compareTo()方法,所以它的排序规划是按字典顺序排序的。如果我们自定义的类要按照某种规则进行排序的话,有两种方法,一种是类似String类实现了Comparable接口并覆盖了compareTo()方法,直接使用Collections.sort(list)。还有一种方法是自定义一个比较器类实现Comparator接口并覆盖compare方法,在这个方法中按自己的需求编写排序规划,如:
class CurrentCompartor implements Comparator<NotifyTempletConfig> { @Override public int compare(NotifyTempletConfig o1, NotifyTempletConfig o2) { int result = o1.getDischargePort().compareTo(o2.getDischargePort()); if (result == 0) { return o1.getDestinalPort().compareTo(o2.getDestinalPort()); } else { return result; } } @Override public boolean equals(Object obj) { return false; } }如果自定义的类没有实现Comparable接口,直接使用Collections.sort(list)不会编译通过,那么你也可以使用第二种方法Collections.sort(list,new CurrentCompartor());传入
一个比较器,按这个比较规划排序。
相关文章推荐
- java反射机制基础详解
- Spring-Task 创建定时任务
- Double类型保留小数的n种方法
- 这是一个秒杀系统,即大量用户抢有限的商品,先到先得 用户并发访问流量非常大,需要分布式的机器集群处理请求 系统实现使用Java
- spring mvc 接收参数方式
- 闲谈(一) Java 使用 Excle 和 CSV 文件
- Java日志工具之SLF4J
- Eclipse 调试Hadoop java.lang.ClassNotFoundException问题解决
- java的io流相关类使用
- java(16)--中英文混合,截取一定长度,保持不乱码
- Java内存监视
- SSH框架(四) Spring、Spring MVC、Struts2优缺点整理
- Java基础之并发编程(一)
- 制作java 批处理运行文件
- 制作java 批处理运行文件
- Spring面试知识点总结
- java 反射获取所有类文件
- java中关键字static的用法
- Java抽象类与接口的区别(2)
- 【Java】----容器Set/List/Map 的区别