List集合根据存储对象的属性字段排序实现
来源:互联网 发布:java发牌器 编辑:程序博客网 时间:2024/05/02 00:35
- List集合根据存储对象的属性字段排序实现
package com.huixin;import java.util.ArrayList;import java.util.Collections;import java.util.List;/** * ListSort类 * * @author Lance * @date 2017/03/10 */public class ListSort { public static void main(String[] args) { List<Student> students = new ArrayList<Student>(); students.add(new Student("张三", 24)); students.add(new Student("李四", 23)); students.add(new Student("王五", 25)); System.out.println("before sort:"); for (Student bean : students) { System.out.println("before sort---->age: " + bean.getAge()); } Collections.sort(students); System.out.println("after sort:"); for (Student bean : students) { System.out.println("after sort---->age: " + bean.getAge()); } }}class Student implements Comparable<Student> { private String name; private Integer age; public Student(String name, Integer age) { this.name = name; this.age = age; } /* * s的age小于this的对应字段,则返回负数; * 大于则返回正数; * 建议去了解compareTo背后的真相 */ @Override public int compareTo(Student s) { return s.getAge().compareTo(this.getAge()); } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
- 预期结果
Connected to the target VM, address: '127.0.0.1:3850', transport: 'socket'before sort:before sort---->age: 24before sort---->age: 23before sort---->age: 25after sort:after sort---->age: 25after sort---->age: 24after sort---->age: 23
======================================================
以上是java8之前的用法,java8提供了多种操作方式。博文修改2017.4.7
实体类
@AllArgsConstructor@NoArgsConstructor@Dataclass Teacher { private String name; private Integer age;}
- 使用Lambda表达式
List<Teacher> teachers = new ArrayList<Teacher>(); teachers.add(new Teacher("张三", 24)); teachers.add(new Teacher("李四", 23)); teachers.add(new Teacher("王五", 25)); System.out.println("before sort:"); for (Teacher bean : teachers) { System.out.println("before sort---->age: " + bean.getAge()); } //Lambda teachers.sort((s1, s2) -> s1.getAge().compareTo(s2.getAge())); System.out.println("after sort:"); for (Teacher bean : teachers) { System.out.println("after sort---->age: " + bean.getAge()); }
- 使用Comparator操作器
//Comparator Collections.sort(teachers, Comparator.comparing(Teacher::getAge));
- 反序排列
Comparator<Teacher> comparator = (t1, t2) -> t1.getAge().compareTo(t2.getAge()); teachers.sort(comparator.reversed());
- 组合排序
//组合排序 teachers.sort(Comparator.comparing(Teacher::getAge).thenComparing(Teacher::getName));
- 完整示例代码
package com.huixin.utils.common;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;/** * ListSort类 * * @author Lance * @date 2017/03/10 */public class ListSortJava8 { public static void main(String[] args) { List<Teacher> teachers = new ArrayList<Teacher>(); teachers.add(new Teacher("张三", 24)); teachers.add(new Teacher("李四", 23)); teachers.add(new Teacher("王五", 25)); teachers.add(new Teacher("钱二", 23)); System.out.println("before sort:"); for (Teacher bean : teachers) { System.out.println("before sort---->age: " + bean.getAge() + "==name:" + bean.getName()); } //Lambda// teachers.sort((t1, t2) -> s1.getAge().compareTo(s2.getAge())); //Comparator// Collections.sort(teachers, Comparator.comparing(Teacher::getAge)); //reversed// Comparator<Teacher> comparator = (t1, t2) -> t1.getAge().compareTo(t2.getAge());// teachers.sort(comparator.reversed()); //组合排序 teachers.sort(Comparator.comparing(Teacher::getAge).thenComparing(Teacher::getName)); System.out.println("after sort:"); for (Teacher bean : teachers) { System.out.println("after sort---->age: " + bean.getAge() + "==name:" + bean.getName()); } }}@AllArgsConstructor@NoArgsConstructor@Dataclass Teacher { private String name; private Integer age;}
0 0
- List集合根据存储对象的属性字段排序实现
- List集合中的对象根据属性排序
- List集合中的对象根据属性排序
- List集合中的对象根据属性排序
- List集合中的对象根据属性排序
- List集合中的对象根据属性排序
- List集合中的对象根据属性排序
- List集合中的对象根据属性排序
- List集合中的对象根据属性排序
- List集合中的对象根据属性排序
- 对象集合list根据对象属性排序2015-8-16
- list排序(1.根据对象的字段排序 2.根据map集合的key值排序)
- java List集合中根据集合对象的属性值进行排序
- List 根据对象的属性自定义排序
- 对list集合中的对象按照字段属性排序
- Java面试题,List集合中根据对象的某一属性排序
- List<T>泛型集合根据对象的某一属性排序
- list集合根据某一字段数值排序
- 增量接口的设计及实现
- 屏幕适配大全
- 自定义CollectionCell init方法
- html5笔记3 — canvas绘画矩形、圆
- Android小笔记(3)
- List集合根据存储对象的属性字段排序实现
- finalize()
- Android Studio打包报错"xxx"is not translated in "xxx"(xxx[Missin
- hdu 4283 You Are the One(区间dp)
- 【b603】作业调度方案
- Weather Station(字符串)
- 57. Insert Interval
- 如何在centos上搭建自己maven仓库
- 我希望进入大学时就能知道的一些事儿