我有一个Map,它的键是一个String,它包含以下键:
“早上好!”
“你今天过得怎么样”
“这一天很好”
“提前致谢”
我想知道是否有一个包含两个特定单词的密钥。 当然可能有多个匹配键,但我需要知道是否有任何布尔答案 - 真或假。
在上面的例子中,对于单词“morning”和“you”,我会成真,而对于“are”和“butiful” - false。
有没有办法检查这样的事情没有迭代地图?
感谢。
答案 0 :(得分:2)
简单回答:没有这样的方式。
有几种类型的地图。
HashMap基于散列算法,它几乎扰乱了字符串的内容。它是故意完成的,并且无法从散列键中可靠地导出字符串的内容。
SortedMap允许您快速定位已排序的值,但无法帮助您在这些字符串中查找单词。
执行您需要做的事情的唯一方法是迭代整个密钥集。
或者,您可以使用文本搜索算法为您的字符串集构建索引,并允许您加快搜索速度。
考虑一下: http://lucene.apache.org/core/
另一个想法是提出适合您需要的哈希算法或地图实现。这可能比看起来更复杂......
答案 1 :(得分:0)
如果没有迭代,这可能是不可能的,因为当前的Map实现没有任何这样的方法。但是还有其他实用程序库可以帮助您。看看this question,它与您提出的类似。它讨论了以下两个可以帮助你的图书馆