java List 排序
时间: 2025-01-20 10:08:08 浏览: 33
### Java 中对 `List` 进行排序的方法
#### 使用 `Collections.sort()` 方法
当列表中的元素属于同一个类,并且该类实现了 `Comparable` 接口时,可以直接调用 `Collections.sort()` 来对列表进行自然顺序排序[^1]。
```java
import java.util.*;
public class SortExample {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(5, 3, 8, 4);
Collections.sort(list); // 自然升序排列
System.out.println("Sorted list: " + list);
}
}
```
对于未实现 `Comparable` 的类或希望按特定规则排序的情况,则需提供比较器 `Comparator` 给 `sort()` 函数作为第二个参数:
```java
import java.util.*;
class Person implements Comparable<Person> {
private String name;
private int age;
public Person(String n, int a){
this.name=n;this.age=a;
}
@Override
public int compareTo(Person otherPerson) {
return Integer.compare(this.age,otherPerson.getAge());
}
// Getters and setters omitted for brevity
}
public class CustomSortExample {
public static void main(String[] args) {
List<Person> people = new ArrayList<>();
people.add(new Person("Alice", 29));
people.add(new Person("Bob", 24));
// Using custom comparator to sort by name descendingly.
Comparator<Person> compareByNameDesc = (p1, p2) -> p2.getName().compareTo(p1.getName());
Collections.sort(people, compareByNameDesc);
for (var person : people) {
System.out.printf("%s (%d)\n", person.getName(), person.getAge());
}
}
}
```
#### 利用流 API 和 lambda 表达式简化代码
自 JDK 8 起引入了 Stream API 可以更简洁地完成同样的任务。通过 `stream().sorted()` 并指定相应的比较逻辑来达到目的[^2]:
```java
import java.util.*;
import java.util.stream.Collectors;
public class StreamSortExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("John", "Jane", "Jim");
List<String> sortedNames = names.stream()
.sorted((a,b)->b.compareTo(a)) // Descending order using lambda expression
.collect(Collectors.toList());
System.out.println(sortedNames);
}
}
```
阅读全文
相关推荐















