Java Collections.sort()

本文深入探讨了Java中Collections.sort()方法的使用,包括其默认升序排序行为以及通过自定义Comparator实现的灵活排序方式。文章提供了具体的代码示例,帮助读者理解如何根据需要调整排序顺序。

参考链接

分类

Collections.sort(List) 默认为升序排序
Collections.sort(List,Comparator) 自定义比较器,可以升序or降序

指定sort升序或降序排列

compare(param1,param2)
如果 return param1 - param2 ,代表升序
如果 return param2 - param1 ,代表降序
举栗子:
在这里插入图片描述

运行结果

在这里插入图片描述

### Java `Collections.sort` 方法使用示例 #### 自然排序 当列表中的元素实现了 `Comparable` 接口时,可以直接调用 `Collections.sort()` 对其进行排序。例如字符串类型的列表,默认会按照字母顺序排列[^5]。 ```java import java.util.Arrays; import java.util.Collections; import java.util.List; public class NaturalOrderSort { public static void main(String[] args) { List<String> words = Arrays.asList("banana", "apple", "orange"); System.out.println("Before sorting: " + words); Collections.sort(words); System.out.println("After sorting: " + words); } } ``` 对于基本数据类型封装类(如 `Integer`, `Double`),同样适用此方式,因为它们都已实现 `Comparable` 接口[^4]。 #### 定制排序 如果希望自定义排序逻辑,则需创建并传入一个 `Comparator` 实现给 `Collections.sort()` 函数。这允许更灵活地控制排序行为,比如忽略大小写或基于特定属性排序对象实例[^1]。 ```java import java.util.*; class Employee implements Comparable<Employee> { private String name; private int age; public Employee(String n, int a){ this.name=n;this.age=a; } @Override public int compareTo(Employee other) { return Integer.compare(this.age,other.age); // 升序年龄对比 } @Override public String toString(){ return name+"("+age+")"; } } public class CustomComparatorExample { public static void main(String[] args) { List<Employee> empList=new ArrayList<>(); empList.add(new Employee("John",29)); empList.add(new Employee("Jane",37)); // 使用匿名内部类作为比较器 Collections.sort(empList, new Comparator<Employee>() { @Override public int compare(Employee o1, Employee o2) { return o1.getName().compareTo(o2.getName()); // 按姓名字典序排序 } }); System.out.println("Sorted by Name:"); for (Employee e : empList) { System.out.println(e.toString()); } // 或者使用lambda表达式简化语法 Collections.sort(empList,(e1,e2)->Integer.valueOf(e1.getAge()).compareTo(Integer.valueOf(e2.getAge()))); System.out.println("\nSorted by Age:"); for (Employee e : empList) { System.out.println(e.toString()); } } // 假设这里还有getName和getAge的方法... } ``` 上述代码展示了两种不同的排序策略:一种是通过员工的名字来排序;另一种则是依据他们的年龄来进行排序。注意,在第二个例子中还提供了利用Lambda表达式的简洁版本[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值