- 浏览: 1873003 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
July01:
最近了解到一款StratoIO打印控件,功能如下:1、Html ...
jquery打印指定的div -
GentlemanQc:
...
quartz系列(二)spring3.2.5与quartz2.1.7集群版集成简要说明 -
静夜独窗:
你好,能说一下server.xml增加的配置是怎么影响性能的吗 ...
tomcat7.0性能优化-挑战极限精简版 -
beyondfengyu:
beyondfengyu 写道如果每个客户进程的时间不同步,时 ...
java并发(二十二)分布式锁 -
beyondfengyu:
如果每个客户进程的时间不同步,时间超前的进程是不是更容易得到锁 ...
java并发(二十二)分布式锁
今天在工作的时候,遇到了List排序的问题,所以总结了一下,与大家分享.Collections.sort排序的时候,用到了Comparator接口下面的compare()方法.下面的小例子中,还用到了匿名类技术和泛型,若朋友们看不懂,可以留言提问^-^
compare(Object 对象1,Object 对象2)重写时
1) 若返回负数,则表示 对象1<对象2
2) 若返回0,则表示 对象1=对象2
3) 若返回正数,则表示 对象1>对象2
反过来,在String类中,他有个CompareTo()方法,他的比较结果也是如此
字符串1.CompareTo(字符串2)比较结果
1) 若字符串1<字符串2,则返回负数
2) 若字符串1=字符串2,则返回0
3) 若字符串1>字符串2,则返回正数
恩,确实接口实现的好一些
只不过没办法使用List的相关强大接口了,好像只能通过数组来操作了
谢谢你的意见,多多交流和沟通
compare(Object 对象1,Object 对象2)重写时
1) 若返回负数,则表示 对象1<对象2
2) 若返回0,则表示 对象1=对象2
3) 若返回正数,则表示 对象1>对象2
反过来,在String类中,他有个CompareTo()方法,他的比较结果也是如此
字符串1.CompareTo(字符串2)比较结果
1) 若字符串1<字符串2,则返回负数
2) 若字符串1=字符串2,则返回0
3) 若字符串1>字符串2,则返回正数
//SortList.java import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; public class SortList { public static void main(String[] args) { // 方法 一 Test // 测试数据 Test t1 = new Test(88, "phl"); Test t2 = new Test(6, "aaa"); Test t3 = new Test(3, "abc"); Test t4 = new Test(5, "aac"); Test t5 = new Test(4, "adc"); Test t6 = new Test(4, "aac"); Test t7 = new Test(4, "aaa"); List<Test> ts = new ArrayList<Test>(); ts.add(t1); ts.add(t2); ts.add(t3); ts.add(t4); ts.add(t5); ts.add(t6); ts.add(t7); // 排序,通过泛型和匿名类来实现 Collections.sort(ts, new Comparator<Test>() { public int compare(Test o1, Test o2) { int result = o1.getId() - o2.getId(); if (result == 0) { result = o1.getName().compareTo(o2.getName()); } return result; } }); // 打印排序结果 Iterator<Test> iterator = ts.iterator(); while (iterator.hasNext()) { Test test = iterator.next(); System.out.println("id=" + test.getId() + ";name=" + test.getName()); } System.out.println("*******************************************"); // 方法 二 Test2 // 测试数据 //Comparable<Test2>[] ts2 = new Test2[5]; Test2[] ts2 = new Test2[5]; ts2[0] = new Test2(11, "phl"); ts2[1] = new Test2(16, "aaa"); ts2[2] = new Test2(21, "adc"); ts2[3] = new Test2(14, "acd"); ts2[4] = new Test2(6, "ada"); java.util.Arrays.sort(ts2); // 打印排序结果 for (int i = 0; i < ts2.length; i++) { System.out.println("id=" + ts2[i].getId() + ";name=" + ts2[i].getName()); } } } // 测试类 class Test { private int id; private String name; public Test(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } // 测试类 class Test2 implements java.lang.Comparable<Test2> { private int id; private String name; public Test2(int id, String name) { this.id = id; this.name = name; } // 实现接口比较方法 public int compareTo(Test2 t) { return this.id - t.getId(); } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } /* 输出结果如下 id=3;name=abc id=4;name=aaa id=4;name=aac id=4;name=adc id=5;name=aac id=6;name=aaa id=88;name=phl ******************************************* id=6;name=ada id=11;name=phl id=14;name=acd id=16;name=aaa id=21;name=adc */
评论
3 楼
杀手请杀人
2014-03-12
别听他说用java.lang.Comparable好 其实这样反而破坏对象的封装 你想想也行你还有其他队形需要比较 是不是又要在那个对象里面重写了呢 这样是多余的 而将比较器和对象分离更加合适 我可以拿比较器来比较任何对象 而且你在使用Comparable时候有时候必须得重写object中的equals方法还有hashcode方法 我觉得Comparator更加好说实话
2 楼
85977328
2010-06-22
mercyblitz 写道
让Test实现java.lang.Comparable接口更好。
恩,确实接口实现的好一些
只不过没办法使用List的相关强大接口了,好像只能通过数组来操作了
谢谢你的意见,多多交流和沟通
1 楼
mercyblitz
2010-06-22
让Test实现java.lang.Comparable接口更好。
发表评论
-
java for 的几种用法
2014-12-02 09:59 1228J2SE 1.5提供了另一 ... -
finally不执行的陷阱
2014-05-16 09:23 1071写了个DEMO,说明下finally在System.exit( ... -
URI和URL的区别
2014-03-26 10:38 1255String HttpServletRequest.getRe ... -
Iterator与ListIterator区别
2014-03-23 22:21 1094Iterator:只能正向遍历集合,适用于获取移除元素。Lis ... -
快速失败特性
2014-03-23 22:20 1084从高级别层次来说快速失败是一个系统或软件对于其故障做出 ... -
java继承静态方法复写
2014-03-12 09:28 4378最近和人交流,遇到了这样一个问题,就是继承当中,静态方法复写的 ... -
关于return和finally
2014-03-11 10:19 2798本来return和finally也不是个事。之前看虚拟机运行原 ... -
JVM内存分析系列(十三)内存实践理解
2014-01-22 10:09 3095java堆 包括 新生代:eden,survival(from ... -
JVM内存分析系列(十二)G1垃圾收集器的使用
2014-01-16 17:10 11477Garbage First(G1)致力于在多CPU和大内存服务 ... -
JVM内存分析系列(十一)GC基本情况与CMS垃圾收集器调优
2014-01-16 11:44 11534初始标记 CMS-initial-mark 并发标记 CMS- ... -
eclipse内存优化
2014-02-26 14:00 1468修改eclipse的配置文件,添加或者修改参数如下,其中XX: ... -
远程调试(二)JVM
2014-01-10 11:43 1712从J2SE 1.4.2开始,就已经提出并实现了JavaTM P ... -
JVM内存分析系列(九)JDK监控和故障处理工具
2014-01-08 18:33 1995jps JVM Process Status Tool,显示指 ... -
guava--google----用来替代commons的jar包
2014-01-06 18:21 16756Guava 是一个 Google ... -
JVM内存分析系列(八)垃圾收集器介绍及性能指标
2013-12-30 13:33 1999内存回收的具体实现。 停顿时间越短就越适合需要 ... -
JVM内存分析系列(七)垃圾收集算法
2013-12-30 12:58 1086内存回收的方法论 标记-清除算法 Mark-Sweep 分为 ... -
JVM内存分析系列(六)对象存活判断
2013-12-26 11:10 1101对象存活常用2种算法 引用计数算法 给对象中添加一个 ... -
JVM内存分析系列(五)浅谈finalize()方法
2013-12-28 18:47 1429根搜索算法中不可达对象在回收之前,要进行二次标记。 第 ... -
JVM内存分析系列(四)对象4种引用
2013-12-25 20:07 1289强引用:只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象 ... -
JVM内存分析系列(三)JVM内存模型初步
2013-12-25 17:09 1135根据《Java虚拟机规范(第二版)》的规定,结构如下 1 ...
相关推荐
JAVA SortList 通用排序类 从网上搜到一个java 对 List 排序的工具,自己改了下 支持 整数 和 浮点数 比较后排序,浮点数小数部分的有点问题,期待大牛帮忙优化。
java List排序工具类 使用示例: new OrderUtils().order(list, "name", OrderUtils.DESC); 相关实例代码: public static void main(String[] args) { List<Person> list = getData(); // 获取无序数据 new ...
在数据库中查出来的列表list中,往往需要对不同的字段重新排序,一般的做法都是使用排序的字段,重新到数据库中查询。如果不到数据库查询,直接在第一次查出来的list中排序,无疑会提高系统的性能。
java实现中文排序,按数字字母汉字的顺序进行排序
天才之作:通过泛型,对List中对象多属性排序,支持设置各属性排序方式(动态属性),看了之后绝对让你震撼!
主要介绍了关于java中List对象列表实现去重或取出以及排序的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
NULL 博文链接:https://xuedong.iteye.com/blog/1147254
java 集合分组排序帮助类有好的意见可以互相交流不甚感激
本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法。分享给大家供大家参考,具体如下: 在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷的进行排序。例如: String[]...
主要介绍了java 中List按照date排序的实现的相关资料,需要的朋友可以参考下
java集合某个字段按照中文拼音排序 java集合某个字段按照中文拼音排序
java开发,使用list对其进行排序,,易学简单。。。。。。。。。
java 使用Collections类对List的排序操作 java 使用Collections类对List的排序操作
文件按照window 的排序规则-Java实现。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
有时候我们可能有这样的需求:将一个List按照某个字段进行排序。比如现在有多个Student,我们要将这些学生按照成绩(grad)进行排序,本demo就是一个将List排序的demo
list集合树状排序 对于前端jquery-treetable无法进行父子关联数据问题进行改进,后台传list集合前,对list进行排序,然后在返回到前台。
java中按找对象的某个属性进行升序降序的排序
* 对传入的list进行分组排序 * list里面数据格式 [01-01-开头.txt, 01-02-简介.jpg, 11-01-尾声.jpg, 11-03-空白.jpg, 11-04-空白2.jpg, 11-06-空白1.jpg, 11-02-答谢语.txt, 02-01-标题.jpg, 02-09-标题555.jpg, ...
java代码-使用java解决list(Map)排序的问题源代码 ——学习参考资料:仅用于个人学习使用!
主要为LIST对象中的指定字段排序 首先比较年龄,如果年龄相同,则比较名字