概述
https://blog.csdn.net/abysscarry/article/details/80891128
package cn.itcast_04;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
import java.util.Map.Entry;
public class Main{
public static void main(String[] args) throws Exception {
File file =new File("e:/info.log");
System.out.println("输入关键字,以空格间隔");
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
String[] keywords = input.split(" ");
long start = System.currentTimeMillis();
BufferedReader br = new BufferedReader(new FileReader(file));
System.out.println(Arrays.toString(keywords));
//该map的key为关键字,value为关键字出现次数
Map<String,Integer> map = new HashMap<String,Integer>();
String line = br.readLine();
//按行读取日志文件,对每一行分别计算关键字次数,累加进map
while(line!=null){
for(int i=0;i<keywords.length;i++){
line += "
";
//不加单词,若关键词在句末,则被遗漏
//通过split方法实现搜索关键字次数功能
int count = (line.split(keywords[i])).length-1;
map.put(keywords[i], (map.get(keywords[i])==null?
count:map.get(keywords[i])+count));
}
line = br.readLine();
}
//将上面map的每个Entry存入list
ArrayList<Map.Entry<String, Integer>> list = new ArrayList<>();
for(Map.Entry<String, Integer> m:map.entrySet()){
list.add(m);
}
//自定义list的比较器,根据value从大到小排列Entry元素
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>(){
@Override
public int compare(Entry<String, Integer> o1,
Entry<String, Integer> o2) {
return o2.getValue()-o1.getValue();
}
});
for(Map.Entry<String, Integer> m:list){
System.out.println(m.getKey()+"---"+m.getValue());
}
long end = System.currentTimeMillis();
System.out.println((end-start)+"ms");
}
}
最后
以上就是爱笑龙猫为你收集整理的大日志文件搜索关键字算法的全部内容,希望文章能够帮你解决大日志文件搜索关键字算法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复