gpt4 book ai didi

Java - 如何从 HashMap 中找到最接近特定数字的值?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:34:16 25 4
gpt4 key购买 nike

嗨,我有一个 HashMap<String, Double>还有一个返回 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 , 它实现了 NavigableMap ,它有很好的 ceilingKeyfloorKey 方法:

    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

注意:如果 value 小于(或大于)最小/最大键,则这两种方法都可以返回 null。

关于Java - 如何从 HashMap 中找到最接近特定数字的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15373496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com