获取前 后 30 天数据 stream处理

本文介绍了如何在Java中使用流(Stream)处理订单数据,筛选出30天前后的订单,依据创建时间进行降序排序并返回列表。

// 获取30天前的时间

 Date thirtyDaysAgo = new Date(System.currentTimeMillis()
         - 30 * 24 * 60 * 60 * 1000);

// 获取30天后的时间

 Date thirtyDaysLater = new Date(System.currentTimeMillis()
         + 30 * 24 * 60 * 60 * 1000);

获取查询集合 处理 stream

public List<Order> getOrderByPhon(String tel) {
    HashMap<String, Object> hashMap = new HashMap<>();
    hashMap.put("tel",tel);

    List<Order> orders = orderMapper.selectByMap(hashMap);
  
 
    // 获取30天后的时间
    Date thirtyDaysLater = new Date(System.currentTimeMillis()
            + 30 * 24 * 60 * 60 * 1000);

    return  orders.stream()
            .filter(order -> order.getCreateTime().after(thirtyDaysLater))
            .sorted(Comparator.comparing(Order::getCreateTime).reversed())
            .collect(Collectors.toList());
}
### 使用 Java Stream API 获取 30数据Java 中,可以通过 `Stream` 的 `limit` 方法来限制流中的元素数量。此方法会截取流中的 N 个元素,并返回一个新的流。以下是一个完整的示例代码,展示如何从一个 `List` 中获取 30数据[^1]。 ```java import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class StreamLimitExample { public static void main(String[] args) { // 创建一个包含多个字符串的列表 List<String> list = Arrays.asList( "apple", "banana", "cherry", "date", "elderberry", "fig", "grape", "honeydew", "kiwi", "lemon", "mango", "nectarine", "orange", "papaya", "quince", "raspberry", "strawberry", "tangerine", "ugli", "vanilla", "watermelon", "xigua", "yam", "zucchini", "blueberry", "cranberry", "dragonfruit", "elderberry", "feijoa", "guava" ); // 使用 stream() 和 limit() 方法获取 30数据 List<String> first30Elements = list.stream() .limit(30) .collect(Collectors.toList()); // 输结果 first30Elements.forEach(System.out::println); } } ``` 在这个例子中,`list.stream()` 将列表转换为流,`limit(30)` 截取 30数据,最后通过 `collect(Collectors.toList())` 将流中的元素收集到一个新的列表中[^2]。 如果原始列表中的元素少于 30 条,则返回所有可用的元素[^3]。 此外,需要注意的是,`limit` 操作是短路操作,这意味着它会在处理完指定数量的元素后停止进一步的处理,从而提高性能[^4]。 ### 注意事项 - 如果需要对数据进行排序或过滤等操作,可以在调用 `limit` 方法之完成这些操作。 - 确保输入的列表不为空,否则可能会抛 `NullPointerException` 或其他异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值