这是我的文件计数程序,包含大量数据,如大约3315个单词。我不想使用哈希映射。我使用了哈希映射并获得了输出,但我的任务是找到另一种方法来查找两个程序之间的频率和执行时间差异(即带有哈希映射的程序和程序没有一个。)我必须使用除hashmap或sets之外的任何东西。
请帮助..
提前致谢。
package thirdassignments;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.SortedSet;
import java.util.TreeSet;
public class WordFreq2 {
public void Working()
{
FileInputStream in = null;
try {
in = new FileInputStream("C:/Users/kishansr/Desktop/file1.txt");
}
catch (FileNotFoundException ex) {
System.err.println("can’t open ");
System.exit(1);
}
String word[]=new String[100000];
int count[]={0},count1=0;
Scanner input = new Scanner(in);
//map<String,Integer> freq = new HashMap<String,Integer>();
while (input.hasNext()) {
count1=count1+1;
}
System.out.println(" Count: "+ count1);
for(int i=0;i<=count1;i++)
{
String word1 = input.next().toLowerCase();
System.out.println("word1 : " +word);
if(word[i] != word1)
{
word[i]=word1;
count[i]=1;
}
else if(word[i]==word1)
{
count[i]=count[i]+1;
}
}
for (int i=0;i<count1;i++) {
System.out.println(count[i] + " : " + word[i]);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
WordFreq2 wf = new WordFreq2();
long startruntime = System.nanoTime();
wf.Working();
long endruntime = System.nanoTime();
System.out.println("start time: "+startruntime+" ,end time :"+endruntime+" ,difference time: "+(endruntime - startruntime)+" nano seconds ");
}
}
答案 0 :(得分:0)
使用正则表达式模式匹配,获取第一个单词,将单词与剩余字符串匹配并获取计数,打印计数并将其替换为空白并重复处理仍然所有单词都已完成。