集合List根据多个字段进行排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集合List根据多个字段进行排序相关的知识,希望对你有一定的参考价值。
参考技术A 最近用java抓取数据的时候,遇到了需要对拿到的List集合按照多个字段进行排序。首先得让排序的实体类实现Comparable类并且重写它的compareTo方法,在compareTo中你可以自定义排序的规则。如果前者大于后者,则返回1,若果相等则返回0,若果前者小于后者,则返回-1;String字符串比较的时候也会经常用到这个compareTo方法,查看String类,可以看到它也实现了Comparable类。
String类
新建一个User类:按照id升序,age降序来排序。
再建一个Junit测试类
排序结果
根据list集合某个字段进行排序
import java.util.ArrayList; import java.util.List; class Student { private String name; private double age; public Student(String name, double age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getAge() { return age; } public void setAge(double age) { this.age = age; } @Override public String toString() { return "Perosn [name=" + name + ", age=" + age + "]"; } } public class ListSort { public static void main(String[] args) { List<Student> students = new ArrayList<>(); students.add(new Student("abc", 12.124)); students.add(new Student("bcd", 20.214)); students.add(new Student("cde", 17.321)); students.add(new Student("def", 25.145)); students.add(new Student("efg", 15.145)); students.sort((x, y) -> Double.compare(x.getAge(), y.getAge())); for (Student stu : students) { System.out.println(stu); } } }
以上是关于集合List根据多个字段进行排序的主要内容,如果未能解决你的问题,请参考以下文章
Java关于list集合根据集合元素对象的某个或多个属性进行排序的工具类