java在多个字符串里匹配

每当我得到一个字符串我要和5000多个字符串去匹配寻找相同的,
可以把5000多个字符串做成文件在java里通过流读取匹配吗,或者有更好的方法吗,

5个回答

最好的办法是做倒排索引,搜索引擎的全文搜索就是这么实现的。

baidu_28379135
baidu_28379135 好吧……那我给个赞。顺便总结一下三个方法是“倒排索引”、“Trie树”、“Hash”。如果字符串较短推荐Hash分组,如果长推荐“Trie”数,如果我理解错了请用List<String>然后equals。
接近 5 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复baidu_28379135: 我没激动啊。电话本找电话应该用hash,你看,lz一个问题竟然给你讨论出3个。
接近 5 年之前 回复
baidu_28379135
baidu_28379135 请勿激动。我不是针对这个回答,只是觉得那2个赞的人“你们在想什么啊!!”毕竟回答的人是当局者,对题目有不同的理解是正常的。另一方面,我觉得lz的意思是类似在电话本里找电话。
接近 5 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 http://blog.csdn.net/jiutianhe/article/details/8076835
接近 5 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复baidu_28379135: http://blog.csdn.net/arhaiyun/article/details/11913501
接近 5 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复baidu_28379135: lz提问不明确,如果是全文索引,就用倒排,如果是做拼写检查或者敏感词过滤,就用字典树
接近 5 年之前 回复
baidu_28379135
baidu_28379135 看我定体问:“看到字符串、匹配、寻找这种词就要说‘倒排’一定是体制的问题”。人家是匹配字符串不是在长字符串里找词语……如果是全文索引,那1个和5000个有什么区别?
接近 5 年之前 回复

可以放到文件中;
也可以把5000个字符串放到数据库中,然后判断是否存在数据库里

5000个字符串这点数据量不大,可以直接放内存中,比如用一个list等。然后每次有一个字符串就去查找
还可以对字符串放hashtable,这样可以直接比较hash来查找,效率更好

看你这5000个原来在哪里了。如果是系统生成的,还是不要存到文档里了,读写很费时间,不如放到一个list或者map中。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问