java steam流 怎么把时间年月日时分秒格式转为年月日 进行分组 排序
时间: 2024-02-16 20:04:16 浏览: 121
可以使用 Java 8 中的 Stream API 来实现 Steam 流数据的时间格式转换、分组和排序。以下是一个示例代码片段:
```java
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
// 假设 Steam 流数据的时间列为 dateStr
List<Map<String, Object>> steamData = new ArrayList<>();
// ... 读取 Steam 流数据并将数据放入 steamData 中 ...
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
List<LocalDateTime> dateList = steamData.stream()
.map(m -> LocalDateTime.parse((String) m.get("dateStr"), formatter)) // 转换时间格式
.map(d -> d.toLocalDate()) // 只保留年月日
.collect(Collectors.toList());
Map<LocalDate, Long> groupedData = dateList.stream()
.collect(Collectors.groupingBy(d -> d, Collectors.counting())); // 按照日期分组统计数量
List<Map.Entry<LocalDate, Long>> sortedData = groupedData.entrySet().stream()
.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())) // 按照数量排序
.collect(Collectors.toList());
System.out.println(sortedData);
```
在上面的代码中,我们首先使用 Java 8 中的 Stream API 将 Steam 流数据转换为 LocalDateTime 类型,并使用 DateTimeFormatter 来指定时间格式。接着使用 `toLocalDate()` 方法只保留年月日部分。然后使用 `groupingBy()` 方法按照日期分组,使用 `counting()` 方法统计数量。最后使用 `sorted()` 方法按照数量排序,并使用 `entrySet()` 方法将 Map 转换为 Set,再使用 `toList()` 方法将 Set 转换为 List 。
这样,就可以得到按照日期分组、按照数量排序的 Steam 流数据了。
阅读全文