У меня есть число длиной nbr = 10000. Я увеличиваю и уменьшаю это значение, а сумма увеличения или уменьшения зависит от его значения. Если nbr > x, то nbr += xx, если nbr > y, то nbr += yy и т. д. В зависимости от других факторов будут меняться значения приращения (xx, yy и т. д.), а также изменятся пределы изменения значения приращения (x,y и т. д.). Мне нужна функция public int увеличенияNbr(int nbr), которая возвращает увеличенное число в соответствии с приведенной выше логикой и делает это максимально эффективно. В настоящее время я реализую это следующим образом, но чувствую, что это не очень эффективно.
private TreeMap aboveNbr_increment_map;
private Integer getIncrementValueAboveNbr(int nbr) {
// finds the valid increment below a certain price
Map.Entry 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));
}
Подробнее здесь: https://stackoverflow.com/questions/430 ... big-number