嗨,我有一个HashMap<String, Double>
还有一个返回双精度值的函数,称为answer
。我想检查 HashMap 中的哪个值最接近答案,然后获取该值的键并打印它。
HashMap<String, Double> output = new HashMap<String, Double>();
contents
("A", 0)
("B", 0.25)
("C", 0.5)
("D", 0.75)
("E", 1)
假设我的一个函数的答案是 0.42,我如何检查它最接近哪个值,然后获取该值的键。我无法切换 HashMap 的键和值(因为之前的函数将值平均分配给每个字母),否则最好遍历每个键并获取值。
如果您的值是唯一的,您可以使用TreeMap,它实现了导航地图,其中有很好的ceilingKey
and floorKey
方法:
NavigableMap<Double, String> map = new TreeMap<>();
map.put(0d, "A");
map.put(0.25, "B");
map.put(0.5, "C");
map.put(0.75, "D");
map.put(1d, "E");
double value = 0.42;
double above = map.ceilingKey(value);
double below = map.floorKey(value);
System.out.println(value - below > above - value ? above : below); //prints 0.5
注意:如果以下情况,这两种方法都可以返回 nullvalue
小于(或大于)最小/最大键。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)