返回Hashtable中找到的值的键

时间:2018-01-31 10:39:17

标签: java arraylist hashtable

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

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);
}

1 个答案:

答案 0 :(得分:2)

containsValue必须遍历哈希表中的所有条目 - 所以只需更改代码即可:

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

我从问题的描述中不清楚你的哈希表有什么意图 - 但它至少不寻常有一个从整数到串。你确定你不想反过来吗?