У меня есть несколько ключей, которые идут 5, 10, 15 и т. Д., До 200, которые содержат только кратные 5. С каждым ключом есть строка, как в этом примере:
5 = test5
10 = test10
15 = test15
У меня есть случайная переменная, которая изменяется и может быть между 0 и 500. Я хочу получить ближайший ключ и его строку, я уже нашел решение, но мне интересно, может ли быть лучшее решение, так как в этом случае используется толькократно 5.
TreeMap<Long,String> map = new TreeMap<>();
map.put(5L,"a");
map.put(10L,"b");
map.put(25L,"e");
map.put(20L,"d");
map.put(15L,"c");
Long key = 42L;
Map.Entry<Long,String> low = map.floorEntry(key);
Map.Entry<Long,String> high = map.ceilingEntry(key);
Object res = null;
if (low != null && high != null) {
res = Math.abs(key-low.getKey()) < Math.abs(key-high.getKey())
? low.getValue()
: high.getValue();
} else if (low != null || high != null) {
res = low != null ? low.getValue() : high.getValue();
}
System.out.println(res);