java - 在不使用 BiMap 的情况下从 Hashmap 中的值检索键的最有效方法

标签 java

我正在计算文件中的单词数,并将单词及其各自的计数加载到 HashMap 中。我已经对值进行了排序并使用它来检索我的 key :

public static String getKey(TObjectIntHashMap<String> hash, int value){
    for(String s: hash.keySet()){
        if(value == hash.get(s)){
            key = s;
            hash.remove(key);
            return key;
    }
}

我知道这是一种相当丑陋的方法,但这似乎是我开始工作的唯一方法。我完全知道双图的存在,但不想使用它。有任何想法吗?

最佳答案

稍微更有效的方法是使用迭代器,因为这可以避免单独查找键和值:

public static String getKey(TObjectIntHashMap<String> hash, int value){
    TObjectIntIterator<String> iterator = hash.iterator();
    while (iterator.hasNext()) {
      iterator.advance();
      if (iterator.value() == value) {
        key = iterator.key();
        iterator.remove();
        return key;
      }
    }
}

关于java - 在不使用 BiMap 的情况下从 Hashmap 中的值检索键的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33246142/

相关文章:

java - 在本地覆盖 servlets load-on-startup

java - 我有这个错误 java.lang.NoSuchMethodError

java - 在 Java 中将月份字符串转换为整数

java - MVC :resources Spring mapping not working

java - 有多少个可调用对象?

java - 我的 @ Produced EntityManager 在 servlet 容器中线程安全吗?

java - 错误 :Frames cannot be converted to components?

java - 无法将 chrome 连接到 HttpsServer

java - 网络逻辑 12 : Define specific JNDI Name for EJB

java - neo4j中如何保证Labeled索引的唯一性