在Java中计算100K字的频率应该花多少时间

时间:2017-11-04 18:15:01

标签: java file hashmap frequency

我必须阅读大约100K字的文本文件,并创建一个具有每个单词频率的HashMap。到目前为止我的代码执行大约需要15-20分钟,我猜我正在做一些可怕的错误。 这项任务的执行时间是多少?

这是我正在使用的代码

    Scanner scanner = new Scanner(new FileReader("myFile.txt"));
    HashMap<String, Integer> wordFrequencies = new HashMap<>();
    while (scanner.hasNextLine()) {
        wordFrequencies.merge(scanner.next(), 1, (a, b) -> a + b);
    }
    return wordFrequencies;

1 个答案:

答案 0 :(得分:2)

它应该是接下来的时间。就像在,如果你只做一次,你几乎不会注意到它需要的时间。如果它需要20分钟,你每秒处理大约100个单词,即使你的话很长,这也是糟糕的表现。

来自BufferedReader的Javadoc(强调补充):

  

通常,由Reader构成的每个读取请求都会导致对基础字符或字节流进行相应的读取请求。 因此建议将BufferedReader包装在任何read()操作可能代价高昂的Reader上,例如 FileReaders 和InputStreamReaders。

尝试将FileReader包裹在BufferedReader

Scanner scanner = new Scanner(new BufferedReader(new FileReader("myFile.txt")));