今天在工作的时候,遇到了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
*/

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. .net datatable 添加一列

    dt.Columns.Add("image", Type.GetType("System.String")); foreach (DataRow dr in d ...

  2. 2007: [Noi2010]海拔 - BZOJ

    Description YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作一个正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)× ...

  3. Ext学习-基础组件介绍

    1.目标    学习对象获取,组件基础,事件模型以及学习ExtJS中的基础组件的应用. 2.内容   1.对象获取   2.组件原理以及基础   3.事件模型   4.常用组件的介绍 3.学习步骤 1 ...

  4. SpringJUnit4加载类目录下(src)和WEF-INF目录下的配置文件二--获取注入的bean的二种方式

    前言: spring容器以xml的形式注入bean,然后可以在类中获取,获取的形式主要有二种:第一种最简单--采用@Resource 或@Autowired关键字在加载spring文件时将bean注入 ...

  5. [设计模式] 3 创建者模式 builder

    转载http://blog.csdn.net/wuzhekai1985/article/details/6667467 建造者模式的定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不 ...

  6. 谁会是 Zabbix 和 Nagios 的继任者?

    [编者按]本文根据 Dataloop.IO 的创始人兼 CEO David Gildeh 对监控工具市场的现状分析以及对未来发展趋势的展望,展开拓展讨论. 为什么监控还是一塌糊涂? 为了调研市场,从而 ...

  7. 【面试题015】链表中倒数第k个结点

    [面试题015]链表中倒数第k个结点    可以用两个指针,当第一个指针指向了第k个时候,第二个指针让他指向链表的第一个元素,然后这两个指针同时向后面移动, 当第一个指针移动到末尾的时候,第二个指针指 ...

  8. SilverLight页面跳转(转载)

    // Silverlight页面的跳转 // (Application.Current.RootVisualasIContent).Content=newDragControl(); //Silver ...

  9. java基础知识回顾之javaIO类--File类应用:获取指定目录下面的指定扩展名的文件,将文件的绝对路径写入到目的文件当中

    /** * File文件综合应用 * 需求:获取指定目录下面,指定扩展名的文件,将文件的绝对路径写到文本文件当中. *  * 思路:1.需要深度遍历.--递归 * 2.遍历的过程中过滤指定扩展名的文件 ...

  10. floodlight make the VMs can not getDHCP IP address

    https://answers.launchpad.net/neutron/+question/242170 这个问题我也遇到了,但是没人回答. floodlight make the VMs can ...