使用Comparator.comparing()可实现List按属性排序,如按age升序:people.sort(Comparator.comparing(Person::getAge));支持多属性排序thenComparing()、降序reversed(),或通过Stream生成新列表避免修改原数据。

在Java中,可以根据对象的属性对List进行排序,常用的方式是使用Collections.sort()或List自带的sort()7a8b6c3e>方法结合<code>Comparator。从Java 8开始,推荐使用Stream API或Comparator的便捷方法来实现,代码更简洁清晰。
假设有一个Person类,包含name和age属性:
class Person {
private String name;
private int age;
// 构造函数
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// getter方法
public String getName() { return name; }
public int getAge() { return age; }
@Override
public String toString() {
return name + "(" + age + ")";
}
}
要根据age对List<Person>排序:
List<Person> people = new ArrayList<>();
people.add(new Person("Alice", 30));
people.add(new Person("Bob", 25));
people.add(new Person("Charlie", 35));
// 按年龄升序排序
people.sort(Comparator.comparing(Person::getAge));
System.out.println(people);
// 输出: [Bob(25), Alice(30), Charlie(35)]
如果需要先按age排序,再按name排序:
立即学习“Java免费学习笔记(深入)”;
people.sort(Comparator.comparing(Person::getAge)
.thenComparing(Person::getName));
这样会先按年龄升序,年龄相同时按姓名字母顺序排列。
使用reversed()方法实现降序:
// 按年龄降序 people.sort(Comparator.comparing(Person::getAge).reversed());
如果不想改变原List,可以使用Stream生成新列表:
List<Person> sorted = people.stream()
.sorted(Comparator.comparing(Person::getName))
.collect(Collectors.toList());
这种方式适合需要保留原始顺序的场景。
基本上就这些常见用法。使用Comparator配合方法引用,代码简洁且可读性强。以上就是Java中如何根据对象属性对List进行排序的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号