技术文摘
Java 中 List 排序的三类方法
2024-12-31 03:33:13 小编
Java 中 List 排序的三类方法
在 Java 编程中,对 List 进行排序是一项常见的操作。掌握不同的排序方法可以帮助我们更高效地处理数据。以下将介绍 Java 中 List 排序的三类主要方法。
第一类方法是使用 Collections.sort() 方法结合 Comparator 接口。通过自定义 Comparator 来指定排序规则,可以实现按照各种复杂的条件进行排序。例如,按照元素的某个属性值升序或降序排列。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class CustomSortExample {
public static void main(String[] args) {
ArrayList<Person> people = new ArrayList<>();
people.add(new Person("Alice", 25));
people.add(new Person("Bob", 30));
people.add(new Person("Charlie", 20));
// 按照年龄升序排序
Collections.sort(people, new Comparator<Person>() {
@Override
public int compare(Person p1, Person p2) {
return p1.getAge() - p2.getAge();
}
});
}
static class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public int getAge() {
return age;
}
}
}
第二类方法是使用 Java 8 的 Stream 流和 sorted() 方法。Stream 提供了一种简洁而强大的方式来处理集合数据。通过 sorted() 方法可以轻松地实现排序,并且还支持并行排序,提高排序的效率。
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class StreamSortExample {
public static void main(String[] args) {
List<Person> people = new ArrayList<>();
people.add(new Person("Alice", 25));
people.add(new Person("Bob", 30));
people.add(new Person("Charlie", 20));
// 按照年龄降序排序
people.stream()
.sorted(Comparator.comparing(Person::getAge).reversed())
.forEach(p -> System.out.println(p.getName() + " - " + p.getAge()));
}
static class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
}
第三类方法是对于实现了 Comparable 接口的对象组成的 List ,可以直接使用 Collections.sort() 方法进行排序。对象需要实现 compareTo() 方法来定义自身的比较规则。
import java.util.ArrayList;
import java.util.Collections;
public class ComparableSortExample {
public static void main(String[] args) {
ArrayList<Person> people = new ArrayList<>();
people.add(new Person("Alice", 25));
people.add(new Person("Bob", 30));
people.add(new Person("Charlie", 20));
Collections.sort(people);
}
static class Person implements Comparable<Person> {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int compareTo(Person other) {
return this.age - other.age;
}
}
}
了解并熟练运用这三类 Java 中 List 排序的方法,可以根据不同的场景和需求选择最合适的方式,提高程序的性能和可读性。
- JDBC 连接 MySQL 时 LOAD DATA 命令无法使用的解决办法
- MySQL count(*)查询耗时久怎么优化
- MySQL选择指定字段致使索引失效的原因剖析
- MySQL 怎样在单列中存储多值数据
- MySQL组合索引失效的原因及“SELECT *”查询阻碍索引使用的缘由
- OSS静态资源存储的计费方式及流量、存储、数据处理费用计算方法
- 怎样查询某公司所有产品的最新检测报告
- Koa 中 md5.update 传递变量导致 Internal Server Error 的解决办法
- MySQL 分区表助力订单数据查询性能优化的方法
- MySQL事务异常未提交时是否需要回滚
- K8s部署MySQL 5.7出现CrashLoopBackOff错误的排查与解决方法
- MySQL 日期比较与随机月份存疑:SQL 查询结果为何总变动
- 利用 EXISTS 关键字判断两表是否存在相同记录的方法
- MySQL 统计 30 万条数据耗时 13 秒是否正常及如何优化
- 多表查询中怎样获取某公司所有产品的最新检测报告