java sort方法用法

java sort方法用法

一、单条件排序

默认升序

// 根据某个参数排序
 list.sort(Comparator.comparing(User::getId));

倒序

// 根据某个参数排序
 list.sort(Comparator.comparing(User::getId).reversed());

二、多条件排序

id升序,age升序

// 根据多个参数排序
 list.sort(Comparator.comparing(User::getId).thenComparing(User::getAge));

id升序,age倒序

// 根据某个参数排序(倒序)
 list.sort(Comparator.comparing(User::getId).reversed().thenComparing(User::getAge).reversed());

id倒序,age升序

// 根据多个参数排序
 list.sort(Comparator.comparing(User::getId).reversed().thenComparing(User::getAge));

id倒序,age倒序

// 根据某个参数排序(倒序)
 list.sort(Comparator.comparing(User::getId).thenComparing(User::getAge).reversed());

三、空值(NULL)判断

属性值为空排前面

 list.sort(Comparator.comparing(User::getId,Comparator.nullsFirst(String::compareTo)));

属性值为空排后面

 list.sort(Comparator.comparing(User::getId,Comparator.nullsLast(String::compareTo)));
### Java中`sort`方法的使用示例 在Java中,`sort`方法可以用于对列表(`List`)中的元素进行排序。以下是基于不同场景的具体使用示例。 #### 示例一:基本排序 当列表中的元素实现了`Comparable`接口时,可以直接调用无参版本的`sort`方法。 ```java import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> numbers = new ArrayList<>(); numbers.add(5); numbers.add(2); numbers.add(8); numbers.sort(null); // 自动按照自然顺序排序 System.out.println(numbers); // 输出 [2, 5, 8] } } ``` 这里使用的`null`作为参数意味着采用元素自身的比较逻辑[^1]。 #### 示例二:自定义排序规则 如果需要根据特定条件进行排序,则需提供一个`Comparator`实例。 ```java import java.util.ArrayList; import java.util.Comparator; import java.util.List; public class Main { public static void main(String[] args) { List<String> words = new ArrayList<>(); words.add("apple"); words.add("banana"); words.add("cherry"); words.sort(new Comparator<String>() { @Override public int compare(String o1, String o2) { return Integer.compare(o1.length(), o2.length()); } }); System.out.println(words); // 按照字符串长度排序,输出 ["apple", "cherry", "banana"] } } ``` 在这个例子中,我们创建了一个匿名内部类来实现`Comparator`接口,并重写了`compare`方法以按字符串长度升序排列[^2]。 #### 示例三:Lambda表达式的应用 从Java 8开始支持lambda表达式,这使得编写简单比较器变得更加方便快捷。 ```java import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<Double> values = new ArrayList<>(); values.add(3.14); values.add(-7.89); values.add(0.0); values.sort((a, b) -> Double.compare(Math.abs(a), Math.abs(b))); System.out.println(values); // 根据绝对值大小排序 [-7.89, 3.14, 0.0] } } ``` 此处利用了lambda表达式简化了比较器的定义过程,同时借助`Math.abs()`函数完成了基于数值绝对值的排序需求[^3]。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值