java - 如何将字符串(短语)快速匹配到 HashMap 值?

标签 java algorithm data-structures

我有一个 HashMap,它的键是 id,它的值是文本:

HashMap<String,String> textMap = new HashMap<String,String>();
textMap.put("id_1","She");
textMap.put("id_2","has");
textMap.put("id_3","a"); 
textMap.put("id_4","neck");
textMap.put("id_5","pain");
//.. more elements in textMap

我想找到给定短语的相关 ID,例如“颈部疼痛”,因此在这种情况下,结果应为 id_4 和 id_5。

谁能推荐一个有效的算法来匹配短语和 ids?

抱歉,我忘了包含一个重要条件。我有短语和单词的偏移量,比如“start_5_end_14”,这意味着 5 应该是“neck”的开头,因为“She”的开头是 0。但是,使情况复杂化的是偏移量可能不正确。

最佳答案

维护一个反向映射,您可以在其中将单词映射到 id。然后,遍历您的短语并为短语中的每个 word 调用 reversedTextMap.get(word)

关于java - 如何将字符串(短语)快速匹配到 HashMap 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13040592/

相关文章:

java - 从多个推荐列表中提取热门推荐

r - 对列表中嵌套两次的矩阵进行组合和操作

java - 如何在 Java gui 应用程序中更改字体?

java - 如何定义一个类并将其实例创建为一个构造

java - 如何从文件导入和操作字符串

algorithm - 用于设计 AI 的蒙特卡罗方法示例

java - 在子类中定义与父类(super class)构造函数不同的构造函数?

algorithm - 随机瓷砖布局

algorithm - 为什么在给定要删除的节点时,单链表和双链表中的删除操作都不为 O(1)?

c++ - 在 block 之间存在间隙的 block 中存在键的情况下使用什么数据结构?