接近指定数字的组合java_Java – 如何从最接近特定数字的hashmap中查找值?

嗨,我有一个HashMap< String,Double>还有一个函数,它返回一个称为答案的double值.我想检查HashMap中哪个值最接近答案,然后获取该值的键并打印出来.

HashMap output = new HashMap();

contents

("A", 0)

("B", 0.25)

("C", 0.5)

("D", 0.75)

("E", 1)

假设我的一个函数的答案是0.42,我如何检查它最接近的值,然后获取该值的键.我无法切换HashMap的键和值(因为前一个函数将值分配给每个字母),否则最好通过每个键并获取值.

解决方法:

如果您的值是唯一的,则可以使用TreeMap,它实现NavigableMap,它具有nice ceilingKey和floorKey方法:

NavigableMap 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,arrays,hashmap

来源: https://codeday.me/bug/20190715/1468643.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值