我有一个 Map,它的键是一个字符串,它包含以下键:
“你早安”
“你今天过得怎么样”
“这一天过得很充实”
“提前致谢”
我想知道是否有一个包含两个特定单词的键。当然可能有不止一个匹配键,但我需要知道是否有布尔答案 - 真或假。
在上面的例子中,对于“morning”和“you”这两个词我会得到正确的结果,而对于“are”和“butiful”这两个词我会得到正确的结果——错误的。
有没有办法在不遍历地图的情况下检查这样的事情?
谢谢。
简单的回答:没有这样的方法。
有几种类型的地图。
HashMap 基于散列算法,它几乎打乱了字符串的内容。这是故意的,没有办法从哈希键中可靠地导出字符串的内容。
SortedMap 允许您快速定位已排序的值,但无法帮助您在这些字符串中找到单词。
完成您需要做的事情的唯一方法是遍历整个密钥集。
或者,您可以使用文本搜索算法为您的字符串集建立索引并允许您加快搜索速度。
考虑一下: http: //lucene.apache.org/core/
另一个想法是提出适合您需要的自己的散列算法或映射实现。这可能比看起来更复杂......