今天在工作的时候,遇到了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,则返回正数  1 //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
*/

最新文章

  1. 向上弹出菜单jQuery插件
  2. CPU 和内存虚拟化原理 - 每天5分钟玩转 OpenStack(6)
  3. C语言学习020:可变参数函数
  4. 初识Aop和扩展Aop
  5. (转)python 优先队列
  6. javascript的字符串操作
  7. Linux上rpm方式安装JDK1.7
  8. wget访问SOAP接口
  9. TempFile模块
  10. 配置错误 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault=&quot;Deny&quot;),或者是通过包含 overrideMode=&quot;Deny&quot; 或旧有的 allowOverride=&quot;false&quot; 的位置标记明确设置的。
  11. 腾讯开源 MMKV — 基于mmap的高性能通用key-value组件
  12. 也谈谈我对Docker的简单理解
  13. Python单元测试框架之pytest 3 -- fixtures
  14. KnockoutJs学习笔记(六)
  15. stm8 io口重映射
  16. Java Math类学习
  17. 怎样修改织梦网站的favicon图标
  18. web标准的理解
  19. 在使用webstorm打开本地项目文件夹的html文件时,浏览器提示404错误
  20. zk删除node模式

热门文章

  1. NET
  2. LoadRunner 学习笔记(1)性能测试常见术语
  3. bnuoj 25659 A Famous City (单调栈)
  4. 下拉刷新ListView实现原理
  5. Emmet快速编写CSS样式
  6. 用Ant实现Java项目的自动构建和部署(转)
  7. 如何通过热修复,搞定开发中的那些 Bug?
  8. hdu 2604 Queuing(动态规划—&gt;矩阵快速幂,更通用的模版)
  9. Android 手机震动 设置震动时间
  10. Openflow的转发与传统的转发区别和优势