对象列表的stream 按某个属性排序
时间: 2023-10-14 18:04:19 浏览: 127
如果你有一个对象列表,想要按照某个属性进行排序,可以使用 Java 8 的 Stream API 中的 sorted 方法,结合 Comparator 对象来进行排序。
例如,假设有一个包含学生信息的 Student 类,其中包含 name 和 age 两个属性:
```java
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
```
现在有一个 List<Student> 类型的集合,要按照学生的年龄进行升序排序,可以使用以下代码:
```java
List<Student> students = Arrays.asList(
new Student("Tom", 18),
new Student("Jerry", 19),
new Student("Mike", 17)
);
List<Student> sortedList = students.stream()
.sorted(Comparator.comparing(Student::getAge))
.collect(Collectors.toList());
```
上面的代码中,使用了 Comparator.comparing 方法来创建一个按照学生年龄进行比较的 Comparator 对象,然后传入 sorted 方法中进行排序。
如果要按照学生的年龄进行降序排序,可以使用 reversed 方法:
```java
List<Student> sortedList = students.stream()
.sorted(Comparator.comparing(Student::getAge).reversed())
.collect(Collectors.toList());
```
注意,sorted 方法不会改变原有集合的顺序,而是生成一个新的已排序的集合。如果需要改变原有集合的顺序,可以使用 sort 方法:
```java
students.sort(Comparator.comparing(Student::getAge)); // 升序排序
students.sort(Comparator.comparing(Student::getAge).reversed()); // 降序排序
```
阅读全文