List<Object>怎么根据其中的某个时间属性排序
时间: 2024-03-11 14:50:31 浏览: 58
如果您有一个包含时间属性的对象列表,您可以使用Java 8的Stream API来按照该时间属性进行排序。假设您有一个`List<Event>`,每个事件对象都有一个时间戳属性`timestamp`,您可以如下排序:
```java
List<Event> events = ... // 创建一个事件列表
List<Event> sortedEvents = events.stream()
.sorted(Comparator.comparing(Event::getTimestamp))
.collect(Collectors.toList());
```
在这个示例中,我们使用`sorted`方法和一个`Comparator`来比较事件的时间戳属性。`Comparator`使用`comparing`方法和一个方法引用`Event::getTimestamp`来指定要比较的属性。最后,我们使用`collect`方法将排序后的事件收集到一个新的列表中。
请注意,时间戳属性必须是`java.util.Date`或其子类的实例,因为`Comparator.comparing`方法期望获取一个实现了`Comparable`接口的类型。如果您的时间戳属性不是`java.util.Date`类型,您可以使用`Comparator.comparingLong`方法并提供一个获取时间戳的`ToLongFunction`。
例如,如果您的事件对象具有`long`类型的时间戳属性`eventTime`,您可以如下排序:
```java
List<Event> events = ... // 创建一个事件列表
List<Event> sortedEvents = events.stream()
.sorted(Comparator.comparingLong(Event::getEventTime))
.collect(Collectors.toList());
```
这里我们使用`comparingLong`方法和一个方法引用`Event::getEventTime`来指定要比较的属性。
阅读全文