我有一个Map,它的键是一个字符串,其中包含以下键:

“早上好!”

“你今天好吗”

“这一天很重要”

“提前致谢”

我想知道是否有一个包含两个特定单词的键。
当然,可能会有一个以上的匹配键,但是我需要知道是否有一个布尔值答案-true或false。

在上述情况下,对于单词“ morning”和“ you”,我将是正确的;对于“ are”和“ butiful”,则将是false。

有没有一种方法可以检查这种事情而无需遍历地图?

谢谢。

最佳答案

简单的答案:没有这种方法。

有几种类型的地图。

HashMap基于哈希算法,该算法几乎对字符串的内容进行加扰。它是有意完成的,无法从哈希键可靠地导出字符串的内容。

SortedMap允许您快速定位已排序的值,但无法帮助您在这些字符串中查找单词。

做您需要做的唯一方法是遍历整个密钥集。

另外,您可以使用文本搜索算法为字符串集建立索引,并加快搜索速度。

考虑一下:
http://lucene.apache.org/core/

另一个想法是提出自己的散列算法或适合您需要的映射实现。这可能比看起来更复杂...

10-07 17:12