java - 使用 java 8 过滤对象列表 | 过滤子对象 | 流
问题描述
我想要拥有有效优惠券的人员名单,即它应该满足 和
之间CURRENT_TIMESTAMP
的条件。你能告诉我如何使用 java 8 实现这一点吗?offerStartDate
offerEndDate
class Person {
private int id;
private String name;
@OneToMany(cascade = CascadeType.ALL)
List<BankAccounts> listOfAccounts;
//Getter and Setter
}
class BankAccounts {
private String bankName;
private String IFSC;
@OneToMany(cascade = CascadeType.ALL)
List<OfferVoucher> offers;
//Getter and Setter
}
class OfferVoucher {
int amount;
Date offerStartDate;
Date offerEndDate;
//other entities
//setter and getter
}
解决方案
List<Person> validPersons = persons.stream()
.filter(p -> p.getListOfAccounts().stream()
.map(BankAccounts::getOffers)
.flatMap(List::stream)
.allMatch(o -> o.getOfferStartDate() < CURRENT_TIMESTAMP && o.getOfferEndDate() > CURRENT_TIMESTAMP))
.collect(Collectors.toList());
如果我正确理解了这个问题,这应该可以。您可能想要使用anyMatch
而不是allMatch
,具体取决于您想要什么。我也将日期处理为Long
,因此您可能必须根据您的应用程序及其实现方式来更新这部分。
推荐阅读
- r - 为同一图中的每一行绘制 ecdf
- c# - C# 使用 txt 文件中的值填充 2 个组合框和 1 个文本框,只有 1 个选择
- r - 如何从 Bloomberg 获取带有 bdp 函数(来自 Rblpapi)的列表查询字段到 R 中?
- node.js - 有没有一种简单的方法可以运行相同代码的 5 个不同实例?
- swift - Swift 组合链接 .mapError()
- c# - C# Web API 查询字符串中的可选参数
- reactjs - React Bootstrap - 一行中的微调器和按钮
- excel - 在工作簿之间切换时代码运行不流畅(Excel VBA)
- javascript - 硬刷新时找不到页面 - Reactjs
- c++ - 使用 AWS Lambda C++ 运行时通过 AWS Lambda 读取 S3 对象时发生内存泄漏