2 elysion k elysion_k 于 2015.07.22 17:38 提问

java在多个字符串里匹配

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

6个回答

caozhy
caozhy   Ds   Rxr 2015.07.22 19:08

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

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

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

oyljerry
oyljerry   Ds   Rxr 2015.07.22 18:27

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

tongyi55555
tongyi55555   2015.07.22 22:13

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

CSDNXIAON
CSDNXIAON   2015.07.23 15:10

java 字符串模糊匹配
java字符串模糊匹配
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
多个字符串关键字同时满足匹配一个字符串和多个字符串关键字分割一个字符串
一 .  有时候我们在处理一个字符串的时候,有这样一个需求,如何用2个或多个字符串同时匹配一个字符串并得到匹配结果呢 ?      运行程序上面程序,得到结果如下: 二.   我们有时候还会遇到这样的一个需求,有一些不太规则的数据,我们要将这些数据给拆分归类,我们该如何做呢? 运行上面程序,我们将得到如下结果: 需要注意的是,该正则是
java: 正则匹配字符串中多个目标子串(贪婪匹配的模拟实现)
一个奇怪的需求,需要匹配到字符串里面的123e这样子的东西,并替换成123*e。比如3e / 21e这样子。假如目标字符串是123efg45emkd89eqq,则替换之后的字符串应该是123*efg45*emkd89*eqq。 也就是说凡是数字和e的组合全部替换成数字和*e。这里给出一个不太优雅的实现。毕竟Java的正则api不是很明朗,很多方法毫无卵用。搜关键字贪婪匹配毫无卵用!!!public
正则表达式——匹配多个字符串之一
当需要匹配多个字符串其中之一时,如: 匹配abc|def两个字符串之一时使用非元组捕获语。 非元组捕获的语法为: (?:exp) 例如匹配一个网页中的所有图片的url,而图片的url通常以jpg,png等后缀名结尾,以下代码演示如何匹配图片的url #!/usr/bin/env python # coding=utf-8import urllib.request as url import re
Java编程—实现字符串匹配
如果匹配返回true,否则返回false。 import java.util.*; public class test3{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); String str=sc.nextLine(); System.o
JAVA总结(五):多行匹配正则表达式的两种解析方法
在利用正则表达式的解析过程中,我们经常会遇到多行字符输出的情形,例如执行执行dir命令,如输出如下结果:1 个文件 59,629,625 字节 7 个目录 41,259,528,192 可用字节针对这样的输出结果,我们有解析方法: 1. 将整个输出结果作为一个正则表达式解析; 2. 在输出结果中按每行依次进行解析;方法一:跨行解析对于跨行解析,首先需要解决的问题是如何匹配换行符,在大部分
java 字符串匹配src 获取值
public static void main(String[] args) { String str="<IMG border=0 align=center src=/epbwebeditor/uploadfile/20140509103010830.jpg 300px; HEIGHT: 201px></SPAN></FONT><SPAN style=FONT-FAMILY: N
使用indexOf匹配字符串
textarea文本框中默认一段文本,需要在点击时,输入框清空。 如果是整段匹配非常麻烦,所以使用indexOf做个简单处理。 jQuery("#content").click(function(){       var a=jQuery(this).val();       if(a.indexOf("欢迎您给我们提出意见和建议")>-1){           jQu
Java在字符串中查找匹配的子字符串
Java在字符串中查找匹配的子字符串
【Java】正则表达式匹配多单词任意顺序组合的字符串
【问题】做表情抽取的时候发现标签里面的属性在不同浏览器下顺序不尽相同,比如: chrome上这样的一个标签: 在firefox上会变成这样: 最开始的正则规则是简单粗暴的方式: String rex = " src=\"1.jpg\"\\stitle=\"\\S+\"\\s+class=\"emoji\\s+emoji\\w+\">"; 在firefox上彻底失败了 【解决】
java Pattern和Matcher——用于匹配和查找字符串中的内容
结论:Pattern与Matcher一起合作.Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持. 单独用Pattern只能使用Pattern.matcher(String regex,CharSequence input)一种最基础最简单的匹配。 Java正则表达式通过java.util.regex包下的Pattern类与Matcher类实现(建议在阅