从哈希表中的字符串中搜索连续的单词

Search for consecutive words from a string in a hashtable

我有一个哈希表,键值是一个词,第二个值是那个词的主题。

一些关键值示例是:

Good, Bad, Not Good, Very Good

HashMap<String, String> subjectMap = new HashMap<>();

我还有一堆需要检查的字符串。因此,如果我有一个显示 "This is not good" 的字符串,我想 return 该主题作为负面评论。我现在正在做的是逐字遍历字符串,但它不会获取多个单词索引。

是否有一种有效的方法可以通过字符串在散列表中搜索一次不仅仅是一个词的词?

以下代码只有打印2个结果的缺陷(

Good
Not Good

), 因为字符串包含两者。在这种方法中,您必须将密钥更改为完全唯一,否则您无法确定

String s = "This is not good";
HashMap<String, String> subjectMap = new HashMap<>();
subjectMap.put("Good", "");
subjectMap.put("Bad", "");
subjectMap.put("Not Good", "");
subjectMap.put("Very Good", "");

for (String str : subjectMap.keySet()) {
    if (s.toLowerCase().contains(str.toLowerCase())) {
        System.out.println(str);
    }
}