常常遇到这样的一个问题:在海量数据中找出出现频率最高的前K个数,或者从海量数据中找出最大的前K个数,这类问题通常称为“top K”问题,如:在搜索引擎中,统计搜索最热门的10个查询词;在歌曲库中统计下载率最高的前10首歌等等。

    ①: 本人初次学习软件工程,近来便遇到一个类似的问题,问题是关于统计一片文章中统计出现频率最高的前十个单词。其实刚拿到这个程序时,也觉得很容易:无非是文件的导入、单词的分类、以及排序算法。所以便开始编程(因为大学没有养成需求设计的习惯,更加注重编写代码),所以,编着编着便越遍越多,仔细看来不仅代码冗余,而且结构混乱。正如师所说,自己的代码不仅别人看不懂,自己几天后都不知道自己的某个类时期什么作用。于是我便开始着手分析程序(因为自己熟悉java,觉得java的封装做的好,其实论速度还是c语言比较快)。

    First:理解这道题做什么的?

               这道小程序做的是统计一篇文章出现频率最高的十个词,及相同的次的次数排序。

   Second:理解这道题须解决哪些问题?

              (1)文件的导入(其实很简单,一个BufferedReader便能搞定)。

               (2)单词的读取,因为是一整篇文章,需要分割单词依据“,。?!”等这些进行分割。

               (3)相同字数的统计。

                (4)排序算法。

   Third:功能的实现?

            (1)文件的导入,依据java提供的基于字符型的文件的输入输出与缓冲流的应用(相信学过I/O的输入输出都应该会)

                   关键代码:

File file=new File(path);    
FileReader fileReader=new FileReader(file);     //建立文件输入流
BufferedReader bufferedReader=new BufferedReader(fileReader);  //建立缓冲输入流
View Code

相关文章:

  • 2021-11-27
  • 2021-06-08
  • 2021-08-04
  • 2021-09-08
  • 2021-08-04
猜你喜欢
  • 2021-05-02
  • 2021-10-16
  • 2021-10-30
  • 2021-05-14
  • 2022-12-23
  • 2021-06-08
  • 2020-11-16
相关资源
相似解决方案