集合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根据多个字段进行排序的主要内容,如果未能解决你的问题,请参考以下文章

根据list集合某个字段进行排序

Java关于list集合根据集合元素对象的某个或多个属性进行排序的工具类

List集合根据存储对象的属性字段排序实现

在Kotlin中按多个字段对集合进行排序[重复]

java中一个List集合,放的都是从不同的表中查出来的数据,请问我怎样可以根据其中的一个字段进行list排序

java中一个List集合,放的都是从不同的表中查出来的数据,请问我怎样可以根据其中的一个字段进行list排序