我有一个号码long nbr = 10000
。我正在增加和减少它,增加或减少的量取决于它的值。如果nbr > x
,则 nbr += xx,如果nbr > y
,则 nbr += yy 等。根据其他因素,增量值(xx、yy 等)将发生变化,并且增量值变化的限制(x、y 等) ) 将改变。我想要一个函数 public int increaseNbr(int nbr) 根据上述逻辑返回一个递增的数字,并尽可能高效地执行此操作。目前我正在像下面这样实现它,但我觉得它不是很有效。
private TreeMap<Integer, Integer> aboveNbr_increment_map;
private Integer getIncrementValueAboveNbr(int nbr) {
// finds the valid increment below a certain price
Map.Entry<Integer, Integer> entry = aboveNbr_increment_map.lastEntry();
while (entry != null) {
if (price>=entry.getKey()) {
return entry.getValue();
}
entry = aboveNbr_increment_map.lowerEntry(entry.getKey());
}
// otherwise return the lowest increment size
return aboveNbr_increment_map.get(aboveNbr_increment_map.firstKey());
}
public Integer getNextNbrAbove(int nbr) {
return nbr + this.getIncrementValueAboveNbr(nbr));
}