嵌套优化的嵌套

问题描述 投票:0回答:1

是否有一种方法可以优化下面的代码:

  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个嵌套循环以及所有条件看起来非常令人不安。最终,有必要遍历每个费率以计算出我找不到更好的方法来计算的溢价。

java arrays for-loop optimization
1个回答
0
投票

这里似乎没有明显的解决方案,如果这里需要循环,则无法摆脱它们。

© www.soinside.com 2019 - 2024. All rights reserved.