jdk8 map根据value中的对象中的时间戳排序
时间: 2024-03-20 11:43:00 浏览: 71
可以使用Java 8中的Stream API来实现根据Map中value中的对象中的时间戳进行排序。具体实现步骤如下:
1. 将Map中的entry转换为List,通过Stream API进行排序;
2. 排序时,可以使用Comparator.comparing()方法指定按照value中的对象中的时间戳进行排序;
3. 最后将排序后的List转换回Map。
示例代码如下:
```java
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class MapSortByValueObjectTimestamp {
public static void main(String[] args) {
Map<String, MyObject> map = new HashMap<>();
map.put("key1", new MyObject(LocalDateTime.of(2021, 1, 1, 10, 0)));
map.put("key2", new MyObject(LocalDateTime.of(2021, 1, 2, 11, 0)));
map.put("key3", new MyObject(LocalDateTime.of(2021, 1, 3, 12, 0)));
// 根据value中的对象中的时间戳排序
List<Map.Entry<String, MyObject>> sortedEntries = map.entrySet()
.stream()
.sorted(Comparator.comparing(entry -> entry.getValue().getTimestamp().toEpochSecond(ZoneOffset.UTC)))
.collect(Collectors.toList());
// 输出排序后的结果
for (Map.Entry<String, MyObject> entry : sortedEntries) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
private static class MyObject {
private LocalDateTime timestamp;
public MyObject(LocalDateTime timestamp) {
this.timestamp = timestamp;
}
public LocalDateTime getTimestamp() {
return timestamp;
}
public void setTimestamp(LocalDateTime timestamp) {
this.timestamp = timestamp;
}
@Override
public String toString() {
return timestamp.toString();
}
}
}
```
输出结果为:
```
key1: 2021-01-01T10:00
key2: 2021-01-02T11:00
key3: 2021-01-03T12:00
```
阅读全文