import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;public class YourObject {private int field1;private String field2;private double field3;// 构造函数和其他代码public int getField1() {return field1;}public String getField2() {return field2;}public double getField3() {return field3;}
}public class Main {public static void main(String[] args) {// 创建包含对象的ArrayListArrayList<YourObject> list = new ArrayList<>();// 添加对象到ArrayList// 使用Comparator对ArrayList进行排序Collections.sort(list, Comparator.comparingInt(YourObject::getField1).thenComparing(YourObject::getField2).thenComparingDouble(YourObject::getField3));}
}
Comparator.comparingInt(YourObject::getField1):这是创建一个比较器,通过 getField1 方法比较对象的整型字段 field1。这个比较器首先按照 field1 进行升序排序。
.thenComparing(YourObject::getField2):使用 thenComparing 方法,如果 field1 相等,则按照对象的字符串字段 field2 进行升序排序。对date类型的数据进行排序也是用这个方法。
.thenComparingDouble(YourObject::getField3):再次使用 thenComparing 方法,如果 field1 和 field2 相等,则按照对象的双精度字段 field3 进行升序排序。
这个排序默认的是升序,如果是想要降序的话在每个 comparing 或 thenComparing 方法后面加上 .reversed() 将会反转排序顺序,使其按照降序排列。
Collections.sort(list, Comparator.comparingInt(YourObject::getField1).reversed().thenComparing(YourObject::getField2).reversed().thenComparingDouble(YourObject::getField3).reversed());