在【金阳光测试】Android自动化第一季第一讲——预备知识中有这样一个面试题
题目如下:
编写一个脚本,统计log文件中首个单词出现的次数,如:
error:xxx
waring:xxx
error:xxx
waring:xxx
由于自身能力及对java的不了解,请大家多多指点,自己写的程序如下:
FileStudy.java:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
public class FileStudy {
public static void main(String[] args){
getFileDemo d = new getFileDemo();
d.getData();
}
}
getFileDemo.java:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class getFileDemo {
String s = "";
String lines = "";
String Temp = "";
String temp = "";
String pathName = "E:\\practise\\Java_File\\log.txt";
String[] tempString;
int endIndex = 0;
int k = 0;
public void getData(){
try {
File filename = new File(pathName);
InputStreamReader reader = new InputStreamReader(new FileInputStream(filename));
BufferedReader br = new BufferedReader(reader);
while((lines =br.readLine()) != null){
// System.out.println(lines);
s += lines + "\n";
}
// System.out.println("------------------");
// System.out.println(s);
String[] b = s.split("\n");
// System.out.println("------------------");
// for (int i=0;i<b.length;i++){
// System.out.println(b[i]);
// }
// System.out.println("------------------");
for (int i=0;i<b.length;i++){
endIndex = b[i].indexOf(":");
// System.out.println(endIndex);
temp += b[i].substring(0, endIndex)+"\n";
tempString = temp.split("\n");
}
// System.out.println("------------------");
for (int i=0;i<tempString.length;i++){
if(tempString[i].equals(tempString[0])){
k = k + 1;
}
// System.out.println(tempString[i]);
}
System.out.println(k);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
金阳光修改后给出的代码如下:
【差距立马就体现出来了。。。】
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class getFileDemo {
String lines = "";
String pathName = "c:\\log.txt";
int temp=0;
static Map <String,Integer> hashMap = new HashMap<String,Integer>();
public void getData() {
try {
File filename = new File(pathName);
InputStreamReader reader = new InputStreamReader(
new FileInputStream(filename));
BufferedReader br = new BufferedReader(reader);
String everyLineData =null;
hashMap.put("error", 0);
hashMap.put("debug", 0);
while ((lines = br.readLine()) != null) {
everyLineData= lines;
System.out.println(lines);
String data = everyLineData.split(":")[0];
if(hashMap.containsKey(data)){
hashMap.put(data, hashMap.get(data)+1);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
getFileDemo d = new getFileDemo();
d.getData();
Iterator iterator = hashMap.entrySet().iterator();
while (iterator.hasNext()) {
Entry entry= (Entry) iterator.next();
String key= (String) entry.getKey();
int value = (int) entry.getValue();
System.out.println(key+value);
}
}
}
推荐下【金阳光测试】的系列视频,相关搜索方法:
方法一:官网:http://www.goldensunshine.cc/ 进入免费视频区
方法二:百度或谷歌搜:金阳光测试
方法二:百度或谷歌搜:金阳光测试