java中List的排序功能的实现
- 今天在工作的时候,遇到了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的排序功能的实现的更多相关文章
- 禁用datagridview中的自动排序功能
把datagridview中的自动排序功能禁用自己收集的两种方法,看看吧①DataGridView中的Columns属性里面可以设置.进入"EditColumns"窗口后,在相应的 ...
- java中字符串的排序(1)
按照前段时间在快速.冒泡等排序的评论中提到是否可以进行字符串的排序,由于最近有考试,时间比较紧,所以今天才实现此功能.此功能是针对一串字符川进行的实现,运行后的结果如下所示: 具体的程序相对较为简单, ...
- C#、Java中的一些小功能点总结(持续更新......)
前言:在项目中,有时候一些小的功能点,总是容易让人忽略,但是这些功能加在项目中往往十分的有用,因此笔者在这里总结项目中遇到的一些实用的小功能点,以备用,并持续更新...... 1.禁用DataGrid ...
- Java中常见的排序方法
本博主要介绍Java中几种常见的排序算法: /* 排序方法的演示1)插入排序(直接插入排序.希尔排序)2)交换排序(冒泡排序.快速排序)3)选择排序(直接选择排序.堆排序)4)归并排序5)分配排序(基 ...
- Oracle中nlssort()函数排序功能
转自:https://www.iteye.com/blog/libaxiaoyuan-2199851 Oracle9i之前,中文是按照二进制编码进行排序的.在oracle9i中新增了按照拼音.部首.笔 ...
- 自己实现java中Iterator(迭代器功能)
今天躺在床上忽然想到一个问题,迭代器的代码是如何实现的?于是乎不由自主的爬起来敲两行代码. List<String> list=new ArrayList<>(2); list ...
- java中的选择排序之降序排列
import java.util.Arrays;//必须加载 class Demo{ public static void main(String []args){ int[] arr={3,54,4 ...
- java中Collections.sort排序详解
Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f, ...
- (网页)java中Collections.sort排序详解(转)
转自CSDN: Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b, ...
随机推荐
- linux 命令grep
linux 命令grep grep命令用来搜索文本,或从给定的文件中搜索行内包含了给定字符串或单词的文件.通常来说,grep显示匹配的行.使用grep来搜索包括一个或多个正则表达式匹配到的文本行,然后 ...
- 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 ...
- C# 浅谈委托----温故而知新
先看看委托的概述: •委托类似于 C++ 函数指针,但它们是类型安全的. • 委托允许将方法作为参数进行传递. • 委托可用于定义回调方法. • 委托可以链接在一起:例如,可以对一个事件调用多个方法. ...
- wap开发使用jquery mobile之后页面不加载外部css样式文件/js文件
场景: wap开发,使用jquery mobile之后不会加载外部自定义的css文件了,需要手动刷新才会加载,查看外部自定义的js文件也是一样. 解决办法: 1.在page下面添加css样式,就不要写 ...
- ffmpeg 打开视频流太慢(下)
前面的博文中已经交代过,ffmpeg打开视频慢主要是因为av_find_stream_info 耗时久.下面给出重写查找音视频stream info的一段代码,用来替代av_find_stream_i ...
- Spring中HibernateCallback的用法(转)
Hibernate的复杂用法HibernateCallback HibernateTemplate还提供一种更加灵活的方式来操作数据库,通过这种方式可以完全使用Hibernate的操作方式.Hiber ...
- EBP的妙用[无法使用ESP定律时]
1.了解EBP寄存器 在寄存器里面有很多寄存器虽然他们的功能和使用没有任何的区别,但是在长期的编程和使用 中,在程序员习惯中已经默认的给每个寄存器赋上了特殊的含义,比如:EAX一般用来做返回值,ECX ...
- jQuery1.9.1源码分析--Animation模块
var fxNow, // 使用一个ID来执行动画setInterval timerId, rfxtypes = /^(?:toggle|show|hide)$/, // eg: +=30.5px / ...
- threaded模式下,比prefork模式要省资源
关于nginx + fastcgi + django 2009-03-10 17:14:43 分类: 系统运维 最近用django开发了一套广告投放系统,这套系统其实是一套网络广告联盟系统,包括广告的 ...
- 全球说:要给 OneAlert 点100个赞
客户背景 「全球说」 Talkmate,是北京酷语时代教育科技有限公司(酷语科技)旗下产品,酷语科技是一家诞生于中国的语言技术公司,致力于为全球用户提供一个全新的多语言学习和社交网络平台 . 全球说是 ...