List集合根据存储对象的属性字段排序实现
2017-03-10 17:55
906 查看
List集合根据存储对象的属性字段排序实现
预期结果
======================================================
以上是java8之前的用法,java8提供了多种操作方式。博文修改2017.4.7
实体类
使用Lambda表达式
使用Comparator操作器
反序排列
组合排序
完整示例代码
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: 24 before sort---->age: 23 before sort---->age: 25 after sort: after sort---->age: 25 after sort---->age: 24 after sort---->age: 23
======================================================
以上是java8之前的用法,java8提供了多种操作方式。博文修改2017.4.7
实体类
@AllArgsConstructor @NoArgsConstructor @Data class 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 @Data class Teacher { private String name; private Integer age; }
相关文章推荐
- Java面试题,List集合中根据对象的某一属性排序
- List集合中删除属性(一个或者多个属性)相同的对象返回List且根据对象属性进行排序输出
- 对list集合中的对象按照字段属性排序
- List集合中的对象根据属性排序
- 对象集合list根据对象属性排序2015-8-16
- List集合中的对象根据属性排序
- List集合中的对象根据属性排序
- 如何根据对象的属性,对集合(list / set)中的对象进行排序
- List<T>泛型集合根据对象的某一属性排序
- List集合中的对象根据属性排序
- 如何根据对象的属性,对集合(list / set)中的对象进行排序
- Java:集合,对列表(List)中的自定义对象按属性(字段)排序(正序、倒序)的方法
- List集合中的对象根据属性排序
- C#中对List<Object>泛型集合,根据对象的某一属性进行升序排序
- Java中对List中的存储对象根据属性进行排序的办法
- list集合根据对象属性排序举例
- List集合中的对象根据属性排序
- Java实现根据List中对象的相应属性进行排序
- List集合中的对象根据属性排序
- List集合中的对象根据属性排序