文档章节

List集合中的对象根据属性排序

小弱鸡
 小弱鸡
发布于 2017/04/04 19:38
字数 347
阅读 8
收藏 0

集合类List存放的数据,默认是按照放入时的顺序存放的,比如依次放入A、B、C,则取得时候,则也是A、B、C的顺序,实际场景中,有时我们需要根据自定义的规则对List中的元素进行排序,该如何实现呢?看下面小例子:

 

[html] view plain copy

在CODE上查看代码片派生到我的代码片

  1. package test.tool.gui.dbtool.util;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.Collections;  
  5. import java.util.Comparator;  
  6. import java.util.List;  
  7.   
  8. public class Test {  
  9.   
  10.     public static void main(String[] args) {  
  11.           
  12.         List<Student> list = new ArrayList<Student>();  
  13.           
  14.         //创建3个学生对象,年龄分别是20、19、21,并将他们依次放入List中  
  15.         Student s1 = new Student();  
  16.         s1.setAge(20);  
  17.         Student s2 = new Student();  
  18.         s2.setAge(19);  
  19.         Student s3 = new Student();  
  20.         s3.setAge(21);  
  21.         list.add(s1);  
  22.         list.add(s2);  
  23.         list.add(s3);  
  24.           
  25.         System.out.println("排序前:"+list);  
  26.           
  27.         Collections.sort(list, new Comparator<Student>(){  
  28.   
  29.             /*  
  30.              * int compare(Student o1, Student o2) 返回一个基本类型的整型,  
  31.              * 返回负数表示:o1 小于o2,  
  32.              * 返回0 表示:o1和o2相等,  
  33.              * 返回正数表示:o1大于o2。  
  34.              */  
  35.             public int compare(Student o1, Student o2) {  
  36.               
  37.                 //按照学生的年龄进行升序排列  
  38.                 if(o1.getAge() > o2.getAge()){  
  39.                     return 1;  
  40.                 }  
  41.                 if(o1.getAge() == o2.getAge()){  
  42.                     return 0;  
  43.                 }  
  44.                 return -1;  
  45.             }  
  46.         });   
  47.         System.out.println("排序后:"+list);  
  48.     }  
  49. }  
  50. class Student{  
  51.       
  52.     private int age;  
  53.   
  54.     public int getAge() {  
  55.         return age;  
  56.     }  
  57.   
  58.     public void setAge(int age) {  
  59.         this.age = age;  
  60.     }  
  61.     @Override  
  62.     public String toString() {  
  63.         return getAge()+"";  
  64.     }  
  65. }  


执行结果:

 

 

[html] view plain copy

在CODE上查看代码片派生到我的代码片

  1. 排序前:[20, 19, 21]  
  2. 排序后:[19, 20, 21]  


当然对象的属性可以多个,比如按年龄升序,按成绩降序等 .

本文转载自:

共有 人打赏支持
小弱鸡
粉丝 0
博文 25
码字总数 13958
作品 0
私信 提问
java开发中list自身排序

java 实现list中对象自身属性的排序 Collections.sort(list, new Comparator<myPlayFile>() { public int compare(myPlayFile arg0, myPlayFile arg1) { int flag = arg0.lastModified().co......

EDIAGD
2014/01/09
0
0
Struts2操作集合标签汇总

Iterator标签主要用于对集合进行扫描,这里的集合包括数组、List、Set以及Map对象。Iterator标签包含如下3个属性。 Value:可选,该属性指定被迭代的集合。被迭代的集合通常使用OGNL表达式指...

Jialy
2013/12/25
0
0
对list中的元素按照元素的属性进行排序

用collection.sort()方法对list集合排序 第一种是list中的对象实现Comparable接口,如下: /** * 根据order对User排序 */ public class User implements Comparable<User>{ private String......

universeye
2014/05/21
0
0
java集合框架总结(七)

一、Collections 简介 Collections 是一个操作 Set、List 和 Map 等集合的工具类 Collections 中提供了大量方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象设置不可变、对集合...

hapier
2016/09/09
39
0
redis数据库的使用

redis中的5种数据类型: redis的数据存储:key=value 键值对 key的数据类型:字符串 value: string字符串 hash哈希 list列表 set集合 zset有序集合 1.1.1string string是redis最基本的类型 ...

AAA年华
2017/12/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

AWS的自动部署工具codedeploy 负载均衡器和github

Elastic Load Balancing 提供了三种可用于 CodeDeploy 部署的负载均衡器:Classic Load Balancer、Application Load Balancer 和 Network Load Balancer。 传统负载均衡器 路由和负载均衡在传...

守护-创造
20分钟前
2
0
Docker 使用简介

Docker 是使用 GoLang 开发的开源容器引擎,可以方便的打包开发好的应用,然后分发到任意 linux 主机上。 与传统的虚拟机相比拥有以下优势: 高效的系统资源利用率 由于不需要进行硬件虚拟和...

YanWen
24分钟前
1
0
linux多线程编程,你还在用sleep么?用pthread_cond_timedwait吧

gnal(&cond); pthread_mutex_unlock(&mutex); printf(“Wait for thread to exit\n”); pthread_join(thread, NULL); printf(“Bye\n”); return 0; } 说明(翻译摘要中提供的连接,翻译的不好......

shzwork
31分钟前
1
0
MacOS源码编译安装 PostgreSQL

编译环境 Mac OSX 下只要装了 Xcode 就行,所有编译需要的工具和类库都有了。CentOS 下需要安装下面的软件包。 $ sudo yum install make gcc readline-devel zlib-devel flex bison 如果是从...

FeanLau
42分钟前
2
0
Spring Cloud Alibaba基础教程:Sentinel使用Apollo存储规则

上一篇我们介绍了如何通过Nacos的配置功能来存储限流规则。Apollo是国内用户非常多的配置中心,所以,今天我们继续说说Spring Cloud Alibaba Sentinel中如何将流控规则存储在Apollo中。 使用...

程序猿DD
49分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部