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

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

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

执行结果:

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

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

如果是字符串的话,可以使用

Collections.sort(list,new Comparator<Student>() {

@Override
            public int compare(Student stu1, Student stu2){
                
                
                return -1*stu1.getAge().compareTo(stu2.getAge());
            }
        });

List集合中的对象根据属性排序相关推荐

  1. 对List集合中的对象进行按某个属性排序

    最近在实际的开发工作中,碰到排序的问题,如题,我们如何针对List集合中的某一个属性进行排序 import java.util.ArrayList; import java.util.Collecti ...

  2. JS 中对数组按照数组中某个对象的属性值进行排序

    最近遇到了按照数组中某个对象的属性值进行排序的需求,找了很多种方式,下面这个完美解决: arr是数组名,attr是数组某个对象的属性 完美解决~~ 转载于:https://www.cnblogs.co ...

  3. JS中对象按属性排序(冒泡排序)

    原文地址 https://www.cnblogs.com/it-Ren/p/10898947.html 一路向北√ 越努力,越幸运. JS中对象按属性排序(冒泡排序) 冒泡排序:它重复地走访过要排序的 ...

  4. 按对象某属性排序的几种方法

    按对象某属性排序的几种方法: 第一种,可以实现边添加边排序,需要用到TreeSet. 第二种,用数组存放对象们,但是不需单独取出某属性排列好再重存,而是在原数组上用比较器重新排一次序.需要用到Arra ...

  5. HTML中DOM对象的属性和方法的层级关系是怎样的?(目录即层次)

    HTML中DOM对象的属性和方法的层级关系是怎样的?(目录即层次) 一.总结 一句话总结:目录就是测试题 1.document取得元素(get element)的方式有哪几种? 解答:四种,分别是id ...

  6. java listt add_Java8 使用流抽取ListT集合中T的某个属性操作

    免费资源网 - https://freexyz.cn/ 在java开发中,我们经常会遇到需要从一个集合中,抽取集合中元素的某一个属性.在java8之前,我们通常采用for循环去获取,但java8之后我 ...

  7. 高薪程序员面试题精讲系列15之Java中的对象如何实现排序?

    一. 面试题及剖析 1. 今日面试题 我们在项目开发时,有时候会遇到列表搜索查询等效果,其中大部分都可以利用SQL语句来实现,但也有些特殊的搜索排序利用SQL是很难实现的,比如对中文进行排序.说到排序 ...

  8. 将集合中的内容按时间排序

    /** * 将集合中的内容按时间排序 * @param list */ private static void ListSort(List<BossMsgInfo> list) { Col ...

  9. JavaScript 中遍历对象的属性

    原文链接 JavaScript 中遍历对象的属性 参考 JavaScript中的属性:如何遍历属性 <JavaScript 高级程序设计> 概述 遍历 JavaScript 对象中的属性没 ...

最新文章

  1. java中的匿名内部类
  2. 苏宁V购 不为拯救 只求改变
  3. C语言——实现用链表存储学生信息,当输入0退出输入,并查找学号为3的学生是否存在
  4. css --- 行内框和内容区
  5. 辅助Visual Studio 2017部署的DevOps新工具
  6. hive的SerDe序列化
  7. 线程的生命周期图(附多线程)
  8. Codeforces Round #467 (Div. 2)
  9. 2017中国程序员薪资生存现状调查报告
  10. 网站开发之HTML基础表格Table和表单Form(三)
  11. 算法导论 斐波那契堆
  12. html实现字体加边框及填充
  13. 计算机搜索不了硬盘文件资料,解决WINDOWS痛点,本地文件搜索从未如此简单
  14. 使用阿里巴巴的iconfont图片库(下载到本地)
  15. VIP专区_读书_腾讯网
  16. 游戏+AI,你不曾想象的未来
  17. 普歌-飞灵团队-nuxt中jQuery报e.indexOf is not a function错误
  18. VirtualBox复制虚拟机(同电脑、跨电脑)
  19. 软技能入门《质量》系列 -- 密切追踪
  20. [Spring Boot 6]企业级开发

热门文章

  1. php和 sqlserver效率,SQLServer语句执行效率及性能测试
  2. 旋转角度_办公娱乐新神器!这款稳固的创意支架,360°旋转随便换角度
  3. 聊聊flink Table的groupBy操作
  4. netty中的future和promise源码分析(二)
  5. 公布.NET 框架库源代码(转)
  6. IoC容器Autofac(3) - 理解Autofac原理,我实现的部分Autofac功能(附源码)
  7. Linux下获取详细硬件信息的工具:Dmidecode命令详解
  8. Fork 一个仓库并同步
  9. 按需生产 ,我们准备好了吗?
  10. Map m=new HashMap()