首先创建一个Student对象,里面有三个属性,分别是int类型,String类型,Date类型

  1. package com.sinoway.cisp.test;
  2.  
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  5.  
  6. public class Student {
  7.  
  8. private int age;
  9. private String name;
  10. private Date birthday;
  11.  
  12. public int getAge() {
  13. return age;
  14. }
  15.  
  16. public void setAge(int age) {
  17. this.age = age;
  18. }
  19.  
  20. public String getName() {
  21. return name;
  22. }
  23.  
  24. public void setName(String name) {
  25. this.name = name;
  26. }
  27.  
  28. public Date getBirthday() {
  29. return birthday;
  30. }
  31.  
  32. public void setBirthday(Date birthday) {
  33. this.birthday = birthday;
  34. }
  35.  
  36. @Override
  37. public String toString() {
  38. return "Student [age=" + age + ", name=" + name + ", birthday="
  39. + new SimpleDateFormat("yyyy-MM-dd").format(birthday) + "]";
  40. // 注意,为了方便看,这里将Date类型的birthday格式化为"yyyy-MM-dd"的String类型
  41. }
  42.  
  43. }

1、给int类型的age从小到大排序

  1. package com.sinoway.cisp.test;
  2.  
  3. import java.text.SimpleDateFormat;
  4. import java.util.ArrayList;
  5. import java.util.Collections;
  6. import java.util.Comparator;
  7. import java.util.List;
  8.  
  9. import org.junit.Test;
  10.  
  11. public class ObjectSortTest {
  12.  
  13. @SuppressWarnings("all")
  14. public static void intSort(List<Student> studentList) {
  15. Collections.sort(studentList, new Comparator() {
  16. @Override
  17. public int compare(Object o1, Object o2) {
  18. Student student1 = (Student) o1;
  19. Student student2 = (Student) o2;
  20. if (student1.getAge() > student2.getAge()) {
  21. return 1;
  22. } else if (student1.getAge() == student2.getAge()) {
  23. return 0;
  24. } else {
  25. return -1;
  26. }
  27. }
  28. });
  29. }
  30.  
  31. @Test
  32. public void intSortTest() throws Exception {
  33.  
  34. Student student1 = new Student();
  35. student1.setAge(18);
  36. student1.setName("C");
  37. student1.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse("2018-03-20"));
  38. Student student2 = new Student();
  39. student2.setAge(16);
  40. student2.setName("B");
  41. student2.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse("2018-01-20"));
  42. Student student3 = new Student();
  43. student3.setAge(20);
  44. student3.setName("A");
  45. student3.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse("2018-02-20"));
  46.  
  47. List<Student> studentList = new ArrayList<>();
  48. studentList.add(student1);
  49. studentList.add(student2);
  50. studentList.add(student3);
  51. for (Student student : studentList) {
  52. System.out.println(student.toString());
  53. }
  54. System.err.println("----------");
  55. intSort(studentList);
  56. for (Student student : studentList) {
  57. System.out.println(student.toString());
  58. }
  59. }
  60.  
  61. }

输出为:

2、给String类型的name排序

  1. @SuppressWarnings("all")
  2. public static void stringSort(List<Student> studentList) {
  3. Collections.sort(studentList, new Comparator() {
  4. @Override
  5. public int compare(Object o1, Object o2) {
  6. Student student1 = (Student) o1;
  7. Student student2 = (Student) o2;
  8. return student1.getName().compareTo(student2.getName());
  9. }
  10. });
  11. }

输出为:

3、给Date类型的birthday排序

  1. @SuppressWarnings("all")
  2. public static void dateSort(List<Student> studentList) {
  3. Collections.sort(studentList, new Comparator() {
  4. @Override
  5. public int compare(Object o1, Object o2) {
  6. Student student1 = (Student) o1;
  7. Student student2 = (Student) o2;
  8. if (student1.getBirthday().getTime() > student2.getBirthday().getTime()) {
  9. return 1;
  10. } else if (student1.getBirthday().getTime() == student2.getBirthday().getTime()) {
  11. return 0;
  12. } else {
  13. return -1;
  14. }
  15. }
  16. });
  17. }

输出为:

根据List集合中的对象属性排序的更多相关文章

  1. 对list集合中的对象进行排序(转载)

    原文链接:http://blog.csdn.net/veryisjava/article/details/51675036 Collections对List集合中的数据进行排序 有时候需要对集合中的元 ...

  2. List集合中的对象进行排序

    类A: public class A implements Comparable<A>{ private Integer id; private String name; public A ...

  3. Java:List集合内的对象进行排序

    List集合中的对象进行排序,除了for外,还有java的Collections对象来对摸个集合进行排序的用法. 比如说我有一个List集合,集合元素为: public class TaskAutoE ...

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

    我们在实际的开发工作中,经常会碰到排序的问题,如题,我们如何针对List集合中的某一个属性进行排序 当list集合中的元素类型是我们自定义类型时,有两种对list中的元素进行排序的方法: 方法一 让l ...

  5. C#判断数组或集合中是否含有属性值为value的对象

    /// <summary> /// 判断list中是否有某个对象的Id_srvplan为value /// </summary> /// <param name=&quo ...

  6. 2018.9.17 面试问题-----如何对List集合中的元素进行排序?

    Collections对List集合中的数据进行排序 有时候需要对集合中的元素按照一定的规则进行排序,这就需要用到 Java中提供的对集合进行操作的工具类Collections,其中的sort方法 先 ...

  7. 对List集合中的元素进行排序

    原文:http://blog.csdn.net/veryisjava/article/details/51675036 Collections对List集合中的数据进行排序 有时候需要对集合中的元素按 ...

  8. json对象数组按对象属性排序

    var array = [ {name: 'a', phone: 1, value: 'val_4'}, {name: 'b', phone: 5, value: 'val_3'}, {name: ' ...

  9. List集合中的对象按照某个字段去重实现

    package com.liying.banana.user; import java.util.ArrayList; import java.util.Comparator; import java ...

随机推荐

  1. Openssh版本升级修复漏洞

    一.由于openssh版本过低当用扫描软件检测时会出现以下漏洞: 二.解决方案是升级高版本,下面是升级的步凑. 1.安装telnet工具,因为升级过程中怕失败或者重启ssh失败.我们直接yun安装即可 ...

  2. bootstrap4的出现(或这篇文章可以叫做bs4与bs3的区别)

    前言:在bootstrap4出现之后修改了bootstrap3的不方便之处,让使用框架的前端开发者更加便捷..(bootstrap下文中简称为bs) 一.栅格系统 相对于原来的bs3,bs4具有了范围 ...

  3. asp.net core 系列 8 Razor框架路由(下)

    三.页面路由操作约定 接着上篇讲asp.net core 系列 7 Razor框架路由.在上篇继续第三节 "页面路由操作约定" 的最后一小节 AddPageRoute . 3.3. ...

  4. 代码实现PHP web服务器下绝对路径到Web网址的转换

    代码实现PHP web服务器下绝对路径到Web网址的转换 代码中用到几个系统变量或常量: 1. 路径中各目录分隔字符 DIRECTORY_SEPARATOR(常量),Windows下DIRECTORY ...

  5. Scrum到底是个神马玩意儿

    从前有一种非常火爆的体育运动,对阵双方各派出11位猛男,在宽阔的草皮球场内争抢一颗可怜的小皮球.哪方能够通过团队协作拿到皮球,并且运送到对方场地的特定位置即得分. 没错,你没有走错片场,快到超级碗里来 ...

  6. 装饰器模式 Decorator 结构型 设计模式 (十)

    引子           现实世界的装饰器模式 大家应该都吃过手抓饼,本文装饰器模式以手抓饼为模型展开简介 "老板,来一个手抓饼,  加个培根,  加个鸡蛋,多少钱?" 这句话会不 ...

  7. JVM(一)史上最佳入门指南

    提到Java虚拟机(JVM),可能大部分人的第一印象是"难",但当让我们真正走入"JVM世界"的时候,会发现其实问题并不像我们想象中的那么复杂.唯一真正令我们恐 ...

  8. C#实现以太仿DApp合约编译、部署

    在网上找了一些关于C#开发以太仿的资料,大概了解了以太仿常用名词,后续可能需要根据资料查看开源的源码进一步熟悉一下. 一.准备合约 这里准备了一个EzToken.sol合约,目前还不会solidity ...

  9. java中变量的存储位置

    1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符 ...

  10. VisualStudio移动开发(C#、VB.NET)Smobiler开发平台——SliderView控件的使用方式

    SliderView控件 一.          样式一 我们要实现上图中的效果,需要如下的操作: 从工具栏上的“Smobiler Components”拖动一个SliderView控件到窗体界面上 ...