Я хотел бы знать, что есть лучший способ найти первое значение больше, чем введенное значение в большой SortedMap, а не перебирать все значения в моем примере ниже. Или если SortedMap - лучшая структура для использования.Поиск первого значения больше, чем в SortedMap
Может ли это быть достигнуто с помощью google-коллекций? Заранее спасибо
public class mapTest {
public static void main(String[] args) {
SortedMap<Double, Object> sortedMap = new TreeMap<Double, Object>();
sortedMap.put(30d, "lala");
sortedMap.put(10d, "foo");
sortedMap.put(25d, "bar");
System.out.println("result: " + findFirstValueGreaterThan(sortedMap, 28d));
}
public static Object findFirstValueGreaterThan(SortedMap<Double, Object> sortedMap, Double value) {
for (Entry<Double, Object> entry : sortedMap.entrySet()) {
if (entry.getKey() > value) {
// return first value with a key greater than the inputted value
return entry.getValue();
}
}
return null;
}
}
строго говоря, 'ceilingKey' и подобные методы находятся в интерфейсе' NavigableMap', а не в интерфейсе 'SortedMap'. –
@ Stephen Спасибо, мой плохой. Я оставлю ответ, так как TreeMap упоминается в вопросе (и все стандартные реализации SortedMap также являются реализациями NavigableMap). –