转自:http://blog.csdn.net/wangjuan_01/article/details/51351633

List集合按某个字段排序

  1. package wjtest_01;
  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.Comparator;
  5. import java.util.List;
  6. public class ListSort<E> {
  7. @SuppressWarnings("unchecked")
  8. public static void main(String[] args) {
  9. List<Student> list = new ArrayList<Student>();
  10. // 创建3个学生对象,年龄分别是20、19、21,并将他们依次放入List中
  11. Student s1 = new Student();
  12. s1.setAge(20);
  13. s1.setUsable(true);
  14. Student s2 = new Student();
  15. s2.setAge(19);
  16. s2.setUsable(true);
  17. Student s3 = new Student();
  18. s3.setAge(21);
  19. s3.setUsable(false);
  20. list.add(s1);
  21. list.add(s2);
  22. list.add(s3);
  23. System.out.println("排序前:" + list);
  24. Collections.sort(list, new Comparator<Student>() {
  25. @Override
  26. public int compare(Student o1, Student o2) {
  27. // 按照学生的年龄进行升序排列
  28. if (o1.getAge() > o2.getAge()) {
  29. return 1;
  30. }
  31. if (o1.getAge() == o2.getAge()) {
  32. return 0;
  33. }
  34. return -1;
  35. }
  36. });
  37. System.out.println("升序排序后:" + list);
  38. Collections.sort(list, new Comparator<Student>() {
  39. public int compare(Student o1, Student o2) {
  40. // 按照学生的年龄进行降序排列
  41. if (o1.getAge() > o2.getAge()) {
  42. return -1;
  43. }
  44. if (o1.getAge() == o2.getAge()) {
  45. return 0;
  46. }
  47. return 1;
  48. }
  49. });
  50. System.out.println("降序排序后:" + list);
  51. Boolean b1 = true; // 创建Boolean对象1
  52. Boolean b2 = false; // 创建Boolean对象0
  53. Boolean b3 = true; // 创建Boolean对象1
  54. System.out.println(b1);
  55. int i;
  56. i = b1.compareTo(b2); // b1和b2进行比较
  57. System.out.println(i);//1-0
  58. i = b2.compareTo(b1); // b2和b1进行比较
  59. System.out.println(i);//0-1
  60. i = b1.compareTo(b3); // b1和b3进行比较
  61. System.out.println(i);//1-1
  62. }
  63. }
  64. class Student{
  65. private int age;
  66. private Boolean isUsable;
  67. public int getAge() {
  68. return age;
  69. }
  70. public Boolean isUsable() {
  71. return isUsable;
  72. }
  73. public void setUsable(Boolean isUsable) {
  74. this.isUsable = isUsable;
  75. }
  76. public void setAge(int age) {
  77. this.age = age;
  78. }
  79. @Override
  80. public String toString() {
  81. return getAge()+"";
  82. }
  83. }

java的list集合如何根据对象中的某个字段排序?的更多相关文章

  1. C#比较两个对象中的指定字段值是否相等

    一.创建CompareFieldAttribute标识要比较的字段 using System; namespace CompareObjField { /// <summary> /// ...

  2. JavaScript实现对象数组按不同字段排序

    如果有一个对象数组,我们想要依据某个对象属性对数组进行排序.而传递给数组sort()方法的比較函数要接收两个參数,即要比較的值.但是.我们须要一种方式来指明依照哪个属性来排序.要解决问题,能够定义一个 ...

  3. 【HOW】如何对Reporting Services表格中数据按字段排序

    Reporting Services中可以设置排序的地方非常多,有很多地方从其字面意思上好像是对表格数据的排序,但实际都不管用.在多次尝试后,得到如下的有效设置方式: 1. 鼠标右键单击要排序字段的内 ...

  4. Java 利用Map集合计算一个字符串中每个字符出现的次数

    步骤分析 1.给出一串字符串,字符串中可以包含字母.数字.符号等等. 2.创建一个Map集合,key是字符串中的字符,value是字符的个数. 3.遍历字符串,获取每一个字符. 5.使用获取到的字符, ...

  5. Java导出List集合到txt文件中——(四)

    有时候,需要将数据以一定格式导出到txt文件中.利用Java的IO可以轻松的导出数据到txt中. package Action.txt; import java.io.BufferedWriter; ...

  6. Java基础之集合框架——在文件中存储地图(TryPhoneBook2)

    控制台程序. import java.io.*; public class Person implements Comparable<Person>, Serializable { // ...

  7. java利用反射交换两个对象中的字段相同的字段值

    有时候我们的两个对象字段都是一样的,只有极少的区别,想要把一个对象字段的值,赋值给另外一个对象值 然后传给另外一个方法使用,但是这个字段太多,一个一个的复制太过繁琐. 这时候利用反射解决这个问题. c ...

  8. Java实验项目三——职工类对象数组按照职工生日排序

    Program: 修改项目三(1)中的第3题,实现比较方法,将对象数组的数据按照生日的大小给职工排序. Description:令日期类MyDate和员工类Worker类实现接口Comparable, ...

  9. c#判断两个对象和对象中的属性是否相同(以及记录对象中的哪些字段,和详细的改变情况)

    当前项目需要记录变更记录,即用户在进行编辑后,将变更操作记录下来.但是数据没有发生变化,则不记录. 代码1:(仅仅返回是否变化的标识) /// <summary> /// 反射对比实体属性 ...

随机推荐

  1. Python根据系统环境配置日志,Python配置日志 Python logger

    我们通常在写爬虫的时候,需要配置日志,但是有可能是在windows开发的,但是程序的运行环境可是是在Linux中,这时候我们就需要不停的更换日志的目录了 但是我们可以实现通过判断不同的运行环境,来时间 ...

  2. Python 实int型和list相互转换 现把float型列表转换为int型列表 把列表中的数字由float转换为int型

    第一种方法:使用map方法 >>> list = [, ] #带有float型的列表 >>> int_list = map(int,list) #使用map转换 & ...

  3. JavaScript 中 this 的用法

    在 JavaScript 中,this 是动态绑定,或称为运行期绑定的.一般而言,在Javascript中,this 指向函数执行时的当前对象. 由于其运行期绑定的特性,JavaScript 中的 t ...

  4. vim中不同模式的帮助信息的查找

    vim的模式有多种,比如normal(普通模式),insert(插入模式),command(命令行模式),visual(可视化模式).相同的命令和快捷键在不同的模式下功能是不一样的,因此帮助信息也是分 ...

  5. [na]华为acl(traffic-filter)和dhcp管理

    这个是财务网络的一个问题, 要求财务的某台机器能访问其他部门区的打印机. 其他部门是不能访问到财务网络的. 华为alc配置实例:-traffic-filter # 在VLAN100上配置基于ACL的报 ...

  6. 使用802.1X+FreeRadius+LDAP实现网络准入方案

    前言:在很多运维项目交流中,我们发现有一些运维团队还是在尝试使用网管或桌面管理来进行网络准入管理,但这两个技术有一定的缺点,所以本文分享一下802.1X+开源软件整合的网络准入管理的实践. 网络准入业 ...

  7. 自己定义TextView 调用ttf格式字体

    方法一:自己定义TextView 调用ttf格式字体 <strong>将ttf格式文件存放在assets/fonts/下</strong> 注:PC系统字体存放在C:\Wind ...

  8. CSS3背景总结

    值 描述 CSS background-color 规定要使用的背景颜色. 1 background-position 规定背景图像的位置. 1 background-size 规定背景图片的尺寸. ...

  9. (转)Sql Server之旅——第八站 复合索引和include索引到底有多大区别?

    索引和锁,这两个主题对我们开发工程师来说,非常的重要...只有理解了这两个主题,我们才能写出高质量的sql语句,在之前的博客中,我所说的 索引都是单列索引...当然数据库不可能只认单列索引,还有我这篇 ...

  10. boa 服务的启动

    使用 buildroot 添加 boa 服务后,通过命令 boa 不能启动该服务,就研究了一下boa.conf的配置. etc/boa/boa.conf # 更改user 和Group 为root. ...