1. 今天在工作的时候,遇到了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,则返回正数 
  2.  
  3. 1 //SortList.java
  4. import java.util.ArrayList;
  5. import java.util.Collections;
  6. import java.util.Comparator;
  7. import java.util.Iterator;
  8. import java.util.List;
  9.  
  10. public class SortList {
  11. public static void main(String[] args) {
  12. // 方法 一 Test
  13. // 测试数据
  14. Test t1 = new Test(88, "phl");
  15. Test t2 = new Test(6, "aaa");
  16. Test t3 = new Test(3, "abc");
  17. Test t4 = new Test(5, "aac");
  18. Test t5 = new Test(4, "adc");
  19. Test t6 = new Test(4, "aac");
  20. Test t7 = new Test(4, "aaa");
  21.  
  22. List<Test> ts = new ArrayList<Test>();
  23. ts.add(t1);
  24. ts.add(t2);
  25. ts.add(t3);
  26. ts.add(t4);
  27. ts.add(t5);
  28. ts.add(t6);
  29. ts.add(t7);
  30. // 排序,通过泛型和匿名类来实现
  31. Collections.sort(ts, new Comparator<Test>() {
  32.  
  33. public int compare(Test o1, Test o2) {
  34. int result = o1.getId() - o2.getId();
  35. if (result == 0) {
  36. result = o1.getName().compareTo(o2.getName());
  37. }
  38. return result;
  39. }
  40. });
  41. // 打印排序结果
  42. Iterator<Test> iterator = ts.iterator();
  43. while (iterator.hasNext()) {
  44. Test test = iterator.next();
  45. System.out.println("id=" + test.getId() + ";name=" + test.getName());
  46. }
  47.  
  48. System.out.println("*******************************************");
  49. // 方法 二 Test2
  50. // 测试数据
  51. //Comparable<Test2>[] ts2 = new Test2[5];
  52. Test2[] ts2 = new Test2[5];
  53. ts2[0] = new Test2(11, "phl");
  54. ts2[1] = new Test2(16, "aaa");
  55. ts2[2] = new Test2(21, "adc");
  56. ts2[3] = new Test2(14, "acd");
  57. ts2[4] = new Test2(6, "ada");
  58. java.util.Arrays.sort(ts2);
  59.  
  60. // 打印排序结果
  61. for (int i = 0; i < ts2.length; i++) {
  62. System.out.println("id=" + ts2[i].getId() + ";name=" + ts2[i].getName());
  63. }
  64. }
  65. }
  66.  
  67. // 测试类
  68. class Test {
  69. private int id;
  70. private String name;
  71.  
  72. public Test(int id, String name) {
  73. this.id = id;
  74. this.name = name;
  75. }
  76.  
  77. public int getId() {
  78. return id;
  79. }
  80.  
  81. public void setId(int id) {
  82. this.id = id;
  83. }
  84.  
  85. public String getName() {
  86. return name;
  87. }
  88.  
  89. public void setName(String name) {
  90. this.name = name;
  91. }
  92. }
  93.  
  94. // 测试类
  95. class Test2 implements java.lang.Comparable<Test2> {
  96. private int id;
  97. private String name;
  98.  
  99. public Test2(int id, String name) {
  100. this.id = id;
  101. this.name = name;
  102. }
  103.  
  104. // 实现接口比较方法
  105. public int compareTo(Test2 t) {
  106. return this.id - t.getId();
  107. }
  108.  
  109. public int getId() {
  110. return id;
  111. }
  112.  
  113. public void setId(int id) {
  114. this.id = id;
  115. }
  116.  
  117. public String getName() {
  118. return name;
  119. }
  120.  
  121. public void setName(String name) {
  122. this.name = name;
  123. }
  124. }
  125.  
  126. /*
  127. 输出结果如下
  128. id=3;name=abc
  129. id=4;name=aaa
  130. id=4;name=aac
  131. id=4;name=adc
  132. id=5;name=aac
  133. id=6;name=aaa
  134. id=88;name=phl
  135. *******************************************
  136. id=6;name=ada
  137. id=11;name=phl
  138. id=14;name=acd
  139. id=16;name=aaa
  140. id=21;name=adc
  141. */

java中List的排序功能的实现的更多相关文章

  1. 禁用datagridview中的自动排序功能

    把datagridview中的自动排序功能禁用自己收集的两种方法,看看吧①DataGridView中的Columns属性里面可以设置.进入"EditColumns"窗口后,在相应的 ...

  2. java中字符串的排序(1)

    按照前段时间在快速.冒泡等排序的评论中提到是否可以进行字符串的排序,由于最近有考试,时间比较紧,所以今天才实现此功能.此功能是针对一串字符川进行的实现,运行后的结果如下所示: 具体的程序相对较为简单, ...

  3. C#、Java中的一些小功能点总结(持续更新......)

    前言:在项目中,有时候一些小的功能点,总是容易让人忽略,但是这些功能加在项目中往往十分的有用,因此笔者在这里总结项目中遇到的一些实用的小功能点,以备用,并持续更新...... 1.禁用DataGrid ...

  4. Java中常见的排序方法

    本博主要介绍Java中几种常见的排序算法: /* 排序方法的演示1)插入排序(直接插入排序.希尔排序)2)交换排序(冒泡排序.快速排序)3)选择排序(直接选择排序.堆排序)4)归并排序5)分配排序(基 ...

  5. Oracle中nlssort()函数排序功能

    转自:https://www.iteye.com/blog/libaxiaoyuan-2199851 Oracle9i之前,中文是按照二进制编码进行排序的.在oracle9i中新增了按照拼音.部首.笔 ...

  6. 自己实现java中Iterator(迭代器功能)

    今天躺在床上忽然想到一个问题,迭代器的代码是如何实现的?于是乎不由自主的爬起来敲两行代码. List<String> list=new ArrayList<>(2); list ...

  7. java中的选择排序之降序排列

    import java.util.Arrays;//必须加载 class Demo{ public static void main(String []args){ int[] arr={3,54,4 ...

  8. java中Collections.sort排序详解

    Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f, ...

  9. (网页)java中Collections.sort排序详解(转)

    转自CSDN: Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b, ...

随机推荐

  1. linux 命令grep

    linux 命令grep grep命令用来搜索文本,或从给定的文件中搜索行内包含了给定字符串或单词的文件.通常来说,grep显示匹配的行.使用grep来搜索包括一个或多个正则表达式匹配到的文本行,然后 ...

  2. Android bluetooth low energy (ble) writeCharacteristic delay callback

    I am implementing a application on Android using BLE Api (SDK 18), and I have a issue that the trans ...

  3. C# 浅谈委托----温故而知新

    先看看委托的概述: •委托类似于 C++ 函数指针,但它们是类型安全的. • 委托允许将方法作为参数进行传递. • 委托可用于定义回调方法. • 委托可以链接在一起:例如,可以对一个事件调用多个方法. ...

  4. wap开发使用jquery mobile之后页面不加载外部css样式文件/js文件

    场景: wap开发,使用jquery mobile之后不会加载外部自定义的css文件了,需要手动刷新才会加载,查看外部自定义的js文件也是一样. 解决办法: 1.在page下面添加css样式,就不要写 ...

  5. ffmpeg 打开视频流太慢(下)

    前面的博文中已经交代过,ffmpeg打开视频慢主要是因为av_find_stream_info 耗时久.下面给出重写查找音视频stream info的一段代码,用来替代av_find_stream_i ...

  6. Spring中HibernateCallback的用法(转)

    Hibernate的复杂用法HibernateCallback HibernateTemplate还提供一种更加灵活的方式来操作数据库,通过这种方式可以完全使用Hibernate的操作方式.Hiber ...

  7. EBP的妙用[无法使用ESP定律时]

    1.了解EBP寄存器 在寄存器里面有很多寄存器虽然他们的功能和使用没有任何的区别,但是在长期的编程和使用 中,在程序员习惯中已经默认的给每个寄存器赋上了特殊的含义,比如:EAX一般用来做返回值,ECX ...

  8. jQuery1.9.1源码分析--Animation模块

    var fxNow, // 使用一个ID来执行动画setInterval timerId, rfxtypes = /^(?:toggle|show|hide)$/, // eg: +=30.5px / ...

  9. threaded模式下,比prefork模式要省资源

    关于nginx + fastcgi + django 2009-03-10 17:14:43 分类: 系统运维 最近用django开发了一套广告投放系统,这套系统其实是一套网络广告联盟系统,包括广告的 ...

  10. 全球说:要给 OneAlert 点100个赞

    客户背景 「全球说」 Talkmate,是北京酷语时代教育科技有限公司(酷语科技)旗下产品,酷语科技是一家诞生于中国的语言技术公司,致力于为全球用户提供一个全新的多语言学习和社交网络平台 . 全球说是 ...