java - 嵌套 for 循环优化
问题描述
有没有办法优化下面的代码:
public BigDecimal calculate(Policy policy) {
BigDecimal total = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_EVEN);
for (PolicyObject policyObject : policy.getPolicyObjects()) {
for (PolicySubObject policySubObject : policyObject.getPolicySubObjects()) {
for (Risk risk : policySubObject.getRisks()) {
for (Rate rate : risk.getRates()) {
// CompareTo returns -1 if BigDecimal is smaller then to compared Big decimal
// 0 if equals and 1 if greater.
if (policySubObject.getSumInsured().compareTo(rate.getRangeStart()) >= 0
&& policySubObject.getSumInsured().compareTo(rate.getRangeEnd()) < 0) {
total = total.add(policySubObject.getSumInsured().multiply(rate.getPremiumRate()));
}
}
}
}
}
return total;
}
4 个嵌套循环和一个条件看起来非常令人不安。最终,需要检查每个费率来计算溢价,我找不到更好的方法。
解决方案
这里似乎没有明显的解决方案,如果这里需要循环,则无法摆脱它们。
推荐阅读
- excel-formula - 基于另一个工作表连接单元格?
- java - 从一个简单的集合创建一个 Spring Data Page
- qt - QML 控制其组件内的加载器行为
- python - 为什么硒给出重复元素?
- bytecode - 为什么这个字节码没有终止运行?
- wordpress - 我的自定义 WordPress REST API 端点返回 HTML 而不是响应
- php - PHP 和 css 表单验证
- .net - AWS NET SDK 来解析电子邮件发送通知
- javascript - Javascript 在输入中插入值
- python - 正则表达式 - 仅当字母后跟逗号 + 逗号 + 忽略括号中的逗号时才拆分