【发布时间】:2019-07-29 17:43:43
【问题描述】:
我正在尝试编写一个返回最富有员工的流。
Optional<User> getRichestEmployee() {
return getUserStream()
.flatMap(user -> user.getAccounts().stream())
.map(this::getAccountAmountInPLN)
.sorted(Comparator.reverseOrder())
.findFirst();
}
我的方法getAccounts() 返回List<Account>
我的方法getAccountAmountInPLN 是这样的:
BigDecimal getAccountAmountInPLN(final Account account) {
return account
.getAmount()
.multiply(BigDecimal.valueOf(account.getCurrency().rate))
.round(new MathContext(4, RoundingMode.HALF_UP));
}
我的问题是,getRichestEmployee() 返回Optional<BigDecimal>。
我无法return 最富有的员工。在流上运行时,我无法访问 User 对象。如何返回用户?
【问题讨论】:
-
要找到最富有的员工(假设
User?),您不是必须将所有员工账户的金额相加吗?我认为没有尝试为员工获取总账户余额。重新考虑你想要做什么。 -
我们可以查看您的 Account 类吗?
-
@Andreas 你是对的。所以我必须总结每个员工的所有账单。 (我不知道为什么我没有在问题中添加它 - 它是我的许多版本和这种方法尝试的结果)。 @BenjaminUrquhart
@Builder @Data public class Account { private final AccountType type; private final String number; private final BigDecimal amount; private final Currency currency; }
标签: java java-8 functional-programming java-stream optional