foodCostRecords.stream().filter(r -> r.getOccurTime().getHour() >= 17) .filter(s -> s.getOccurTime().getHour() <= 23).collect(Collectors.toList());
时间: 2024-04-28 18:20:42 浏览: 40
这是一个 Java 8 中使用 Stream API 进行过滤的示例代码。该代码使用了 filter() 方法对一个名为 foodCostRecords 的集合进行了两次过滤,并最终使用 collect() 方法将过滤结果转换为一个 List 集合。
具体来说,该代码的作用是筛选出 foodCostRecords 集合中,在晚上 5 点(包含 5 点)到晚上 11 点(包含 11 点)之间发生的费用记录。其中:
- filter(r -> r.getOccurTime().getHour() >= 17) 表示筛选出发生时间在晚上 5 点及以后的费用记录。
- filter(s -> s.getOccurTime().getHour() <= 23) 表示在第一次筛选结果的基础上,再筛选出发生时间在晚上 11 点及以前的费用记录。
- 最后使用 collect(Collectors.toList()) 将过滤结果转换为一个 List 集合。
需要注意的是,该代码中用到了 Java 8 中的 lambda 表达式以及 Stream API,需要在 JDK 8 或以上的环境下才能正确运行。
相关问题
那我想这样写 当该参数为10或60时写.filter(mqInfoEntity -> mqInfoEntity.getMonitorDate().getMinutes() % requestMqInfo.getWatchTimeDensity() == 0) 当参数为24时写.filter(mqInfoEntity -> mqInfoEntity.getMonitorDate().getHours() % requestMqInfo.getWatchTimeDensity() == 0) 我怎么把他们放到一行代码里
可以使用三元运算符来实现。可以这样写:
```
mqInfoEntity -> requestMqInfo.getWatchTimeDensity() == 24 ? mqInfoEntity.getMonitorDate().getHour() % 24 == 0 : mqInfoEntity.getMonitorDate().getMinutes() % requestMqInfo.getWatchTimeDensity() == 0
```
这个代码表示,当requestMqInfo.getWatchTimeDensity()为24时,判断小时数是否整除24;否则判断分钟数是否整除requestMqInfo.getWatchTimeDensity()。
String date = WorkStatisticsUtil.getHour(1);
这段代码的作用是获取当前时间往前一小时的时间。
其中,`WorkStatisticsUtil` 是一个工具类,`getHour` 方法的实现可能类似于:
```java
public static String getHour(int hoursAgo) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR_OF_DAY, -hoursAgo);
Date date = calendar.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
}
```
这个方法使用 `Calendar` 类来获取当前时间并往前推指定的小时数,然后使用 `SimpleDateFormat` 类将时间格式化为字符串。调用 `getHour(1)` 方法可以获取当前时间往前一小时的时间字符串。