当前位置: 首页 > 面试题库 >

Java Hashmap:如何从价值中获取关键?

范浩荡
2023-03-14
问题内容

如果我有value "foo",并且HashMap<String> ftw为其ftw.containsValue("foo")返回a true,那么如何获取相应的键?我是否必须遍历哈希图?最好的方法是什么?


问题答案:

如果你选择使用Commons Collections库而不是标准Java Collections API,则可以轻松实现此目的。

Collections库中的BidiMap接口是一个双向映射,使你可以将键映射到值(如法线映射),也可以将值映射到键,从而允许你在两个方向上执行查找。getKey()方法支持获取值的键。

需要注意的是,bidi映射不能将多个值映射到键,因此,除非你的数据集在键和值之间具有1:1映射,否则你不能使用bidimaps。

更新资料

如果要依赖Java Collections API,则必须在将值插入到映射中时确保键和值之间的1:1关系。说起来容易做起来难。

一旦可以确保使用,请使用entrySet()方法获取Map中的一组条目(映射)。获得类型为Map.Entry的集合后,请遍历条目,将存储的值与期望值进行比较,并获得对应的key。

更新#2

可以在Google Guava和重构的Commons-Collections库(后者不是Apache项目)中找到对带有泛型的比迪地图的支持。感谢Esko指出Apache Commons Collections中缺少的通用支持。将集合与泛型一起使用可使代码更易于维护。



 类似资料:
  • 问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 6年前关闭。 我想从URL获取值,以按ID从数据库中选择数据。我想要ID值。 例如,如果我打开数据库, 我想获取id = 12的值。 如果我打开,则 获取数据库中id = 7的值,依此类推。 我有一些代码: 问题答案: 网址: 码:

  • 问题内容: 问题 从地图中获取数据 资料格式 注意 如何从上述结果中获得以下值 1.Event_dtmReleaseDate 2.strID 3.Trans_strGuestList 我试过的 res.Map(“ Event_dtmReleaseDate”); 错误:res.Map未定义(类型map [string] interface {}没有字段或方法Map) res.Event_dtmRel

  • 在的。NET框架4. x,我可以使用在中获取,然后我可以通过 但是在。Net内核,我必须注入,并且不能通过 有没有一种方法可以直接通过获取的值?

  • 问题内容: 我有一个枚举,看起来像: 我有一个看起来像的测试班 输出为: 代替 我不确定这里出什么问题了吗?? 问题答案: 您需要 重写枚举的方法:

  • 我想制作一个简单的共享按钮来获取TextView值并共享它,但我不知道怎么做。 代码如下: 而相关的布局是: 我在这里看了文档和一些类似的问题,但找不到我的答案。感谢你对此的帮助。

  • 我有一个窗体,其中有一个字段用于选择一个方法来对对象进行排序。但是,当我引用该字段以获取它的值时,它就等于呈现此表单的HTML代码。我如何解决这个问题? 我的表单: 我的观点: 的控制台输出: