【发布时间】:2017-06-03 10:25:21
【问题描述】:
我想在 hashmap 中搜索一个键并找到最接近该键的键,但返回键不应小于输入值,即使不同更接近,它应该返回更高的更接近的值。
例如,如果我要搜索值 10,它应该返回键 12 而不是 9。或者如果我搜索值 13,它应该返回我 17 而不是 12
我已经尝试了几种方法,但我仍然无法实现我想要的。有人对此有线索吗?
HashMap<Integer, ArrayList> list = new HashMap<Integer, ArrayList>();
list.put(17,null);
list.put(7,null);
list.put(9,null);
list.put(12,null);
public int findCloestButNotLess(int value, Map<Integer, ArrayList> map) {
double minDiff = Double.MAX_VALUE;
int nearest = 0;
for (int key : map.keySet()) {
int diff = Math.abs(value - key);
if (diff < minDiff) {
nearest = key;
minDiff = diff;
}
}
return nearest;
}
【问题讨论】:
-
如果订单很重要,您应该使用
TreeMap。