java - 返回在哈希表中找到的值的键

标签 java arraylist hashtable

我知道如何在哈希表中查找相应键的值,但是如何查找附加到特定值的键?我编写了一个循环遍历字符串并查找关键字的函数。它很快就能做到这一点,但我需要返回找到的值(关键字)的键。这是我到目前为止的方法

public void findKeywords(POITextExtractor te, ArrayList<Hashtable<Integer,String>> listOfHashtables, ArrayList<Integer> KeywordsFound) {
    String document = te.getText().toString();
    String[] words = document.split("\\s+");
    int wordsNo = 0;
    int wordsMatched = 0;
    System.out.println("listOfHashtables = " + listOfHashtables);
    for(String word : words) {
        wordsNo++;
        for(Hashtable<Integer, String> hashtable : listOfHashtables) {
            //System.out.println(hashtable + " found in the document:");
            if(hashtable.containsValue(word)) {

                //<RETURN KEY OF THAT VALUE>

                wordsMatched++;
                System.out.println(word);
            }
        }
    }
    System.out.println("Number of words in document = " + wordsNo);
    System.out.println("Number of words matched: " + wordsMatched);
}

最佳答案

containsValue 无论如何都必须迭代哈希表中的所有条目 - 因此只需更改您的代码即可做到这一点:

for (Map.Entry<Integer, String> entry : hashtable) {
    if (word.equals(entry.getValue()) {
        // Use entry.getKey() here
    }
}

从问题的描述中我不清楚你的哈希表打算表示什么 - 但至少有一个从整数到字符串的映射是不寻常的。您确定不希望反过来吗?

关于java - 返回在哈希表中找到的值的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48540086/

相关文章:

Java 类/包交互

java - math.random,只生成一个 0?

java - System.out.println ("Serializable: "+ arrayList instanceof Serialized) 不打印 'Serializable' 字

Java - 从MySQL获取乱码结果(列表)

hashtable - Netlogo::嗜血的食人乌龟和我自己/ self 困惑

c# - C# 中的哈希表比 C++ 更快?

java - 避免在聚合子模型上使用持久层

java - 无法在 Netbeans 中连接 SQL 数据库

android - 尝试获取全局 ArrayList 时获取 NullPointer

java - 使用链式对象实现 HashTable