java关键字查询算法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java关键字查询算法相关的知识,希望对你有一定的参考价值。
大家好,我要实现一个java关键字查询算法
在一个.txt中,有一段文字
当在我的程序界面中输入关键字后
可以在.txt中查询
并将查询结果返回到程序界面
只须返回true/false
"我邹是想知道"非常感谢你的回答
你的回答我认真的看了一下,也上机调试了。.tex文件里的文字是汉字,关键字也是汉字(我需要的是返回在.txt文件中是否存在关键字,出现的位置以及次数)
1,s.indexOf(key)方法返回的是指定字符(key)在此字符串中第一次出现处的索引,如果关键字在字符串中出现了2次呢
2,好像不能分段查询,即指出在第一自然段的某处,在第二自然段的某处
再次对你的回答表示感谢!!!
import java.io.BufferedReader;
import java.io.File;
public class search
//查找方法,参数,文件绝对路径,查找关键字
public static boolean search(String filepath,String key)
try
File f = new File(filepath);
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String s = "";
//int i = 1;
while((s = br.readLine()) != null)
if(s.indexOf(key) != -1)
return true;
return false;
catch(Exception e)
e.printStackTrace();
return false;
public static void main(String args[])
System.out.println(search.search("d://t.txt","l2"));
修改了下,加两个变量,可以指出查找的位置。
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.File;
public class search
//查找方法,参数,文件绝对路径,查找关键字
public static String search(String filepath,String key)
try
File f = new File(filepath);
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String s = "";
int i = 1;
int m = 0;
while((s = br.readLine()) != null)
if((m = s.indexOf(key)) != -1)
return "第"+i+"段,第"+m+"处";
i++;
return null;
catch(Exception e)
e.printStackTrace();
return null;
public static void main(String args[])
System.out.println(search.search("d://t.txt","asd"));
这个,查汉字是没有问题的。
另外,你要全文检索的话,indexOf()还有个方法,indexOf(int start,String key),指定开始查找的位置跟关键字,你查到一处后,将这个数值加1,做为继续查找的开始位置就可以了。 参考技术A 你是不是要做文本编辑器?或者是本地搜索类的软件?
如果是的话,恐怕你要去看看自然语言处理方面的东西。
比如分词。你需要把你的要查询的文档分词,然后按照分词的结果做索引。这样才可以! 参考技术B 这样做不完善啊 假如别人输入
int String
或者
int S
好像也会被认为是关键字吧。 参考技术C 就用readline方法,
一行一行地查吧,
楼上的算法还是可行的,
要指出在哪一行,
直接在readline中设置一个变量就可以了,
扫过一行自增就行
另外个人认为,
还要考虑这样一种情况,
比如说关键字为 java
但 ja
va
被分开在两行中了,
这个怎么算呢?
Java面试题
Java8新特性
https://blog.csdn.net/sanri1993/article/details/101176712
jdk1.7和1.8的区别:
添加了红黑树,增加查询效率
gc算法(垃圾回收算法)
https://www.jianshu.com/p/3fc4450e1bbd
static关键字
https://blog.csdn.net/qq_34337272/article/details/82766943
int和integer
https://blog.csdn.net/chenliguan/article/details/53888018
程序的结构
https://zhidao.baidu.com/question/561343838.html
ArrayList和LinkedList区别
https://www.cnblogs.com/lingshang/p/10897912.html
arraylist扩展机制
http://www.imooc.com/article/278549
vector集合
https://www.cnblogs.com/0820LL/p/9665811.html
hashmap结构,为什么用的是链表,为什么用的是数组
https://www.cnblogs.com/sxkgeek/p/9341350.html
hashmap和hashset的区别
https://blog.csdn.net/chen213wb/article/details/84647179
hashset和treemap的区别
https://blog.csdn.net/sinat_25444819/article/details/102457592
hashmap和hashtable区别
https://www.cnblogs.com/williamjie/p/9099141.html
排序算法
https://www.cnblogs.com/onepixel/articles/7674659.html
查找算法
https://www.iteye.com/blog/xiaojun-it-2291852
set、map、list等集合
https://blog.csdn.net/daily11/article/details/51086245
集合和数组的区别
https://www.cnblogs.com/hewanli/p/12306479.html
集合和数据相互转换
https://www.cnblogs.com/aspirant/p/10396220.html
网络数据模型
https://www.cnblogs.com/fakeCoder/p/5093744.html
网络传输协议
https://www.cnblogs.com/wangcp-2014/p/10083565.html
tcp三次握手四次挥手
https://baijiahao.baidu.com/s?id=1654225744653405133&wfr=spider&for=pc
socket和serversocket区别
https://www.cnblogs.com/mareymarey111/archive/2011/12/08/2280253.html
线程和进程
https://www.cnblogs.com/yuxiang1/p/10608497.html
线程的创建方式
https://www.cnblogs.com/htyj/p/10848646.html
线程的周期
https://www.cnblogs.com/marsitman/p/11228684.html
线程池
https://www.cnblogs.com/superfj/p/7544971.html
线程.run和.start的区别
https://blog.csdn.net/kapukpk/article/details/53008516
这里应该是cpu
线程优先级
https://blog.csdn.net/qq_35400008/article/details/80219947
线程调度
https://www.iteye.com/blog/youyu4-2351235
Lock与synchronized区别
https://msd.misuland.com/pd/3255817997595448438
公平锁和非公平锁
死锁
Java多线程之线程交互
转发和重定向的区别
mysql索引
mysql实现分页
mysql存储引擎
b+树、红黑树、二叉树概念
接口和抽象类的区别
面向对象三大特征
乐观锁和悲观锁
sychronized关键字
redis(缓存穿透、缓存雪崩)布隆过滤器,多路复用模型和非阻塞模型
以上是关于java关键字查询算法的主要内容,如果未能解决你的问题,请参考以下文章