我有几个键,分别为 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);
神不在的星期二
LEATH
小唯快跑啊
相关分类