我有一个Map,它的键是一个字符串,其中包含以下键:
“早上好!”
“你今天好吗”
“这一天很重要”
“提前致谢”
我想知道是否有一个包含两个特定单词的键。
当然,可能会有一个以上的匹配键,但是我需要知道是否有一个布尔值答案-true或false。
在上述情况下,对于单词“ morning”和“ you”,我将是正确的;对于“ are”和“ butiful”,则将是false。
有没有一种方法可以检查这种事情而无需遍历地图?
谢谢。
最佳答案
简单的答案:没有这种方法。
有几种类型的地图。
HashMap基于哈希算法,该算法几乎对字符串的内容进行加扰。它是有意完成的,无法从哈希键可靠地导出字符串的内容。
SortedMap允许您快速定位已排序的值,但无法帮助您在这些字符串中查找单词。
做您需要做的唯一方法是遍历整个密钥集。
另外,您可以使用文本搜索算法为字符串集建立索引,并加快搜索速度。
考虑一下:
http://lucene.apache.org/core/
另一个想法是提出自己的散列算法或适合您需要的映射实现。这可能比看起来更复杂...