如何用stream流对list对象集合里面的时间字段进行倒序排序
时间: 2024-05-14 22:13:10 浏览: 8
假设List中的元素对象为MyObject,其中包含一个时间字段time,可以按照以下步骤进行倒序排序:
1. 导入必要的类库:
```java
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
```
2. 定义Comparator对象用于按照时间字段进行排序:
```java
Comparator<MyObject> comparator = Comparator.comparing(MyObject::getTime).reversed();
```
3. 使用stream流对List进行排序:
```java
List<MyObject> sortedList = list.stream().sorted(comparator).collect(Collectors.toList());
```
4. sortedList为按照时间字段倒序排列的List集合。
完整代码示例:
```java
import java.time.LocalDateTime;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<MyObject> list = List.of(
new MyObject("obj1", LocalDateTime.of(2021, 1, 1, 0, 0, 0)),
new MyObject("obj2", LocalDateTime.of(2021, 2, 1, 0, 0, 0)),
new MyObject("obj3", LocalDateTime.of(2021, 3, 1, 0, 0, 0))
);
Comparator<MyObject> comparator = Comparator.comparing(MyObject::getTime).reversed();
List<MyObject> sortedList = list.stream().sorted(comparator).collect(Collectors.toList());
sortedList.forEach(System.out::println);
}
}
class MyObject {
private String name;
private LocalDateTime time;
public MyObject(String name, LocalDateTime time) {
this.name = name;
this.time = time;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public LocalDateTime getTime() {
return time;
}
public void setTime(LocalDateTime time) {
this.time = time;
}
@Override
public String toString() {
return "MyObject{" +
"name='" + name + '\'' +
", time=" + time +
'}';
}
}
```