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

2023-11-29

嗨,我有一个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(使用前将#替换为@)

Java - 如何从哈希图中找到最接近特定数字的值? 的相关文章

随机推荐

  • 转换后的图像不清楚。 .wmf 转 png

    我正在尝试使用 c net 将 wmf 图像文件转换为 png 格式 但是 保存的图像不清楚 my code Metafile img new Metafile test wmf MetafileHeader header img GetM
  • VueJS从父组件访问子组件的数据

    我正在使用webpack 的 vue cli 脚手架 我的 Vue 组件结构 层次结构当前如下所示 App PDF Template 背景 动态模板图像 静态模板图像 Markdown 在应用程序级别 我想要一个 vuejs 组件方法 可以
  • 在Python中按(n个)块迭代迭代器?

    你能想出一种好方法 也许使用 itertools 将迭代器分割成给定大小的块吗 所以l 1 2 3 4 5 6 7 with chunks l 3 成为迭代器 1 2 3 4 5 6 7 我可以想到一个小程序来做到这一点 但也许不是 ite
  • Lein Clojure 1.3 与 Clojure 1.2.1

    我承认这个问题的措辞有点糟糕 请让我知道我应该运行哪些命令来提供更多信息 我会提供它 背景 我使用 Clojure 已有约 1 年了 主要只是通过clojure repl 现在 我开始使用 Lein 然而 leon 不喜欢我的一些代码 这是
  • 如何使用php检索特定文件夹中的所有文件名

    比如说 在我的网络服务器中有一个名为 upload files 的文件夹 然后我的 php 页面之一应该获取该文件夹中的所有文件名 我已经用谷歌搜索过 但到目前为止返回的文件名只是用户浏览的页面 谢谢 有很多方法可以检索文件夹内容 例如gl
  • CodeIgniter - 使用一个输入上传多个文件

    我正在尝试上传几个文件立即从1个输入
  • 如何创建一个无论字符序列如何都匹配的正则表达式?

    假设我要求用户输入所提供的某些单词 他 只会将其输入到将被验证的文本框中不管我已经寻找答案几个小时了 但我被困住了 例如应输入的单词是 foo bar green 即使订单是 我仍然可以匹配它绿富酒吧 or 绿色Foo酒吧 我非常了解正则表
  • 如何在 EF Core 2.1.0 中设置管理员用户?

    我有一个使用 EF Core 2 1 0 的 ASP NET Core 2 1 0 应用程序 如何使用管理员用户播种数据库并赋予他 她管理员角色 我找不到任何关于此的文档 As user cannot be seeded in a norm
  • Android - ListView:复选框未保持选中状态

    我有一个列表视图 大约有 200 个项目 我为复选框实现了一个自定义 ArrayAdapter 我使用 SparseBooleanArray 来存储框的值 所有这些工作正常 但我似乎无法以图形方式更新复选框的检查 如果用户单击 则该框被选中
  • 链接两个 D3 图

    我正在尝试链接两个 D3 图 以便选择右侧直方图的一部分 导致某个散点图显示在左侧 This是我的尝试 我当前的问题是为什么正确的图没有渲染 我认为这可以追溯到如何在 d3 中创建和引用多个 SVG 标签 D3 有针对这种情况的 SVG 控
  • 使用包将 Python 类拆分为多个模块

    我在 python 中编写了一些代码作为一个类 但现在我正在尝试将其作为包分发 但我在弄清楚不同的部分应该如何组合在一起时遇到了一些麻烦 因此 当我最初编写代码时 我有一个包含一些函数的类 其中包括 init 功能 我现在已将每个函数拆分为
  • 从 XSLT 2 中元素值的语义层次结构创建父子元素

    我在 XML 内容中有一系列 P 标记 它们在其初始值内具有语义层次结构 但是 P 标记是线性的 寻找 XSLT 2 转换 语义层次如下 1 a I A 正则表达式序列如下
  • 何时使用 PerThreadLifetimeManager?

    我按照下面链接的示例来设置 Unity 以与我的服务层一起使用 我的项目的设置与本文中的项目非常相似 我了解一切 除了到底为什么PerThreadLifetimeManager注册服务依赖项时使用 请记住 我还使用了也在我的服务层中使用的通
  • Python 目录中的最新文件

    我正在编写一个脚本 试图列出以 xls 结尾的最新文件 这应该很容易 但我收到了一些错误 Code for file in os listdir E Downloads if file endswith xls print file new
  • 为什么manage.pysyncdb无法连接到google云sql数据库?

    在最近更新 Google App Engine 上的应用程序期间 我正在使用以下内容更新数据库 SETTINGS MODE prod manage py syncdb 我上次运行它时有效 但现在我收到以下错误 Traceback most
  • 如何在 PHP 中检查数据是否为空或空格

    我有一个需要用户名的输入字段 场景是 我如何防止用户在该字段中提供空格 我已经添加了required在输入字段中 这样我可以防止用户将其留空
  • 用正在呈现的控件完全替换 ItemsControl ContentPresenter

    我正在使用 ItemsControl 根据我的模型生成控件列表 在查看可视化树时 我注意到每个渲染的控件都包装在 ContentPresenter 中 添加的控件是第 3 方控件 旨在在每个控件之间显示分隔符 如果它们是同级控件 这允许用户
  • Excel 文件被覆盖而不是连接 - Python - Pandas

    我正在尝试使用以下脚本将其中的所有 Excel 文件和工作表合并为一个 它有点工作 但随后 Excel 文件 c xlsx 被每个文件覆盖 因此只有最后一个 Excel 文件被连接 不知道为什么 import pandas as pd im
  • grails 模板 - 脚手架控制器

    我是 grails 的新手 我现在正在研究我的脚手架模板 特别是我的控制器 每次生成它时我都想要一个定制的控制器 所以我使用了 安装模板 我总是在控制器上创建一个命令对象 是否可以将域类中的字段包含到生成的控制器中的命令对象中 我知道我必须
  • Java - 如何从哈希图中找到最接近特定数字的值?

    嗨 我有一个HashMap