Java8流sorted排序-多字段升序降序Null值排序

时间:2025-03-17 08:13:29

多读多写多记录,多学多练多思考。 ----------- Banuit Gang(香柚帮)


// 1.一降一升,注意两种写法
// 先以name升序,升序结果进行name降序,再进行age升序(有效)
().sorted((User::name).reversed().thenComparing(User::age));
// 先以name降序,再进行age升序(有效)
().sorted((User::name,()).thenComparing(User::age)); 

// 2.双降,注意两种写法
// 先以name升序,升序结果进行name降序,再进行age升序,结果就是name和age都降序(测试无效,不知道写法是不是错了,求指点)
().sorted((User::name).reversed().thenComparing(User::age).reversed);
// 先以name降序,再进行age降序(有效)
().sorted((User::name,()).thenComparing(User::age,())); 


// 3.包含Null数据的集合排序
// nullsFirst,age为空值的排在在前边,nullsLast相反
sorted((User::age, (Integer::compareTo))) 

注意:两种写法的排序是不一样的,第一种是得到排序结果后再排序,第二种是直接进行排序,很多人会混淆导致理解出错,第二种更好理解,建议使用。