gpt4 book ai didi

java - 在不迭代的情况下在 HashMap 中获取整数

转载 作者:行者123 更新时间:2023-11-29 03:18:17 25 4
gpt4 key购买 nike

如果我有:

HashMap<String, Integer> hm = new HashMap<String, Integer>();

我是否能够在不遍历整个 HashMap 的情况下基于整数获取所有字符串?如果这不可能,处理这个问题的最佳方法是什么?

最佳答案

不,您必须遍历该映射的内容以获得字符串的整数。这样做的原因是您将 key 设置为您想要的任意字符串,而 value 是您要搜索的整数。

如果您有整数,则可以遍历条目集:

for(Map.Entry<String, Integer> entry : hm.entrySet()) {
if(entry.value().equals(searchValue) {
// logic
}
}

但这种方法采用了为此使用 map 的想法,并将其颠倒过来。

把它想象成一本字典。将单词和定义分别视为键和值。如果您知道要查找的单词,则会相对快速地为您提供值 - 它按字母顺序排列。

但是,如果你只知道定义,你怎么查字典呢?您必须查看每个定义,直到找到您所拥有的确切定义,然后您可以从中获取 key 。

这里也发生了同样的事情。您现在无需使用索引来搜索您的数据结构,而是遍历其中的每个可能值以获取特定键。

对于更大的数据集,这是完全站不住脚的。

我会推荐 BiMap来自 Google Guava,有一些注意事项:

  • 值必须是唯一的
  • 考虑到这对于您想要做的事情来说可能有点矫枉过正;反转键值对并使用整数作为键可能更简单。

此外,根据您的评论,您甚至可能想查看 Multimap反而。它允许您为多个不同的值提供一个键,这可能适合您尝试使用的用例。

这是一个示例实现:

    Multimap<Integer, String> dataSet = HashMultimap.create();

dataSet.put(1, "foo");
dataSet.put(1, "bar");
dataSet.put(1, "baz");

// prints [baz, bar, foo]
System.out.println(dataSet.get(1));

关于java - 在不迭代的情况下在 HashMap 中获取整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25215437/

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