在Java中匹配地图密钥

时间:2013-02-12 06:03:08

标签: java regex map

我有一个Map,它的键是一个String,它包含以下键:

“早上好!”

“你今天过得怎么样”

“这一天很好”

“提前致谢”

我想知道是否有一个包含两个特定单词的密钥。 当然可能有多个匹配键,但我需要知道是否有任何布尔答案 - 真或假。

在上面的例子中,对于单词“morning”和“you”,我会成真,而对于“are”和“butiful” - false。

有没有办法检查这样的事情没有迭代地图?

感谢。

2 个答案:

答案 0 :(得分:2)

简单回答:没有这样的方式。

有几种类型的地图。

HashMap基于散列算法,它几乎扰乱了字符串的内容。它是故意完成的,并且无法从散列键中可靠地导出字符串的内容。

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

执行您需要做的事情的唯一方法是迭代整个密钥集。

或者,您可以使用文本搜索算法为您的字符串集构建索引,并允许您加快搜索速度。

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

另一个想法是提出适合您需要的哈希算法或地图实现。这可能比看起来更复杂......

答案 1 :(得分:0)

如果没有迭代,这可能是不可能的,因为当前的Map实现没有任何这样的方法。但是还有其他实用程序库可以帮助您。看看this question,它与您提出的类似。它讨论了以下两个可以帮助你的图书馆