要求:

1.读取文件;

2.记录出现的词汇及出现频率;

3.按照频率降序排列;

4.输出结果。

概要:

1.读取的文件路径是默认的,为了方便调试,将要统计的文章、段落复制到文本中即可;
2.只支持英文;
3.会按照词汇出现的频率降序排列。

实现:

1.使用FileReader、BufferedReader读取文件;

2.采用StringTokenizer进行字符分割;

3.用hashmap保存统计数据;

4.自定义一个类用来实现按value排序;

5.输出结果。

默认路径文件:

1         String filename = "E:/Test.txt";
2
3         FileReader fk = new FileReader(filename);
4         BufferedReader br = new BufferedReader(fk);

统计词频:

 1         String s;
 2         while((s = br.readLine()) != null) {
 3             file += s; //读出整篇文章,存入String类的file中。
 4         }
 5
 6         StringTokenizer st = new StringTokenizer(file," ,.!?\"'"); //用于切分字符串
 7
 8         while(st.hasMoreTokens()) {
 9             String word = st.nextToken();
10             if(hm.get(word) != null) {
11                 int value = ((Integer)hm.get(word)).intValue();
12                 value++;
13                 hm.put(word, new Integer(value));
14             }
15             else {
16                 hm.put(word, new Integer(1));
17             }
18         }

排序类:

 1 import java.util.Comparator;
 2 import java.util.TreeMap;
 3
 4 public class ByValueComparator implements Comparator<String> {
 5     TreeMap<String, Integer> treemap;
 6     public ByValueComparator(TreeMap<String, Integer> tm) {
 7         this.treemap = tm;
 8     }
 9
10     @Override
11     public int compare(String o1, String o2) {
12         // TODO Auto-generated method stub
13         if(!treemap.containsKey(o1) || !treemap.containsKey(o2)) {
14             return 0;
15         }
16         if(treemap.get(o1) < treemap.get(o2)) {
17             return 1;
18         } else if(treemap.get(o1) == treemap.get(o2)) {
19             return 0;
20         } else {
21             return -1;
22         }
23     }
24 }

输出结果:

        TreeMap tm = new TreeMap(hm);ByValueComparator bvc = new ByValueComparator(tm);List<String> ll = new ArrayList<String>(tm.keySet());Collections.sort(ll, bvc);for(String str:ll){System.out.println(str+"——"+tm.get(str));}

实例验证:

There are moments in life when you miss someone so much that you just want to pick them from your dreams and hug them for real! Dream what you want to dream;go where you want to go;be what you want to be,because you have only one life and one chance to do all the things you want to do.
May you have enough happiness to make you sweet,enough trials to make you strong,enough sorrow to keep you human,enough hope to make you happy? Always put yourself in others’shoes.If you feel that it hurts you,it probably hurts the other person, too.
The happiest of people don’t necessarily have the best of everything;they just make the most of everything that comes along their way.Happiness lies for those who cry,those who hurt, those who have searched,and those who have tried,for only they can appreciate the importance of people
who have touched their lives.Love begins with a smile,grows with a kiss and ends with a tear.The brightest future will always be based on a forgotten past, you can’t go on well in lifeuntil you let go of your past failures and heartaches.
When you were born,you were crying and everyone around you was smiling.Live your life so that when you die,you're the one who is smiling and everyone around you is crying.
Please send this message to those people who mean something to you,to those who have touched your life in one way or another,to those who make you smile when you really need it,to those that make you see the brighter side of things when you are really down,to those who you want to let them know that you appreciate their friendship.And if you don’t, don’t worry,nothing bad will happen to you,you will just miss out on the opportunity to brighten someone’s day with this message.

  结果:

you——32
to——19
who——9
those——9
the——8
have——7
and——7
of——6
make——6
that——6
want——6
your——4
with——4
when——4
one——4
life——4
a——4
in——4
enough——4
for——3
don’t——3
just——3
it——3
on——3
them——3
their——3
will——3
what——2
were——2
way——2
touched——2
this——2
things——2
so——2
smiling——2
smile——2
really——2
people——2
past——2
only——2
miss——2
message——2
let——2
is——2
hurts——2
go——2
everyone——2
do——2
crying——2
be——2
around——2
are——2
appreciate——2
The——2
another——1
always——1
along——1
all——1
When——1
There——1
Please——1
May——1
Love——1
Live——1
If——1
Happiness——1
Dream——1
And——1
Always——1
die——1
day——1
cry——1
comes——1
chance——1
can’t——1
can——1
brightest——1
brighter——1
brighten——1
born——1
best——1
begins——1
because——1
based——1
bad——1
happen——1
grows——1
go;be——1
future——1
from——1
friendship——1
forgotten——1
feel——1
failures——1
everything;they——1
everything——1
ends——1
dreams——1
dream;go——1
down——1
know——1
kiss——1
keep——1
importance——1
if——1
hurt——1
human——1
hug——1
hope——1
heartaches——1
happy——1
happiness——1
happiest——1
or——1
opportunity——1
nothing——1
need——1
necessarily——1
much——1
most——1
moments——1
mean——1
lives——1
lifeuntil——1
lies——1
side——1
send——1
see——1
searched——1
real——1
re——1
put——1
probably——1
pick——1
person——1
peoplewho——1
out——1
others’shoes——1
other——1
tried——1
trials——1
too——1
they——1
tear——1
sweet——1
strong——1
sorrow——1
something——1
someone’s——1
someone——1
yourself——1
worry——1
where——1
well——1
was——1

  

代码地址:https://coding.net/u/regretless/p/WordFrequencyCount/git

转载于:https://www.cnblogs.com/regretless/p/5836573.html

Java实现的词频统计相关推荐

  1. Java案例:词频统计

    目录 一.功能需求 二.实现思路 三.实现步骤 1.创建Java项目 - Java版词频统计

  2. java实验6 词频统计_java实训一——词频统计

    ---恢复内容开始--- 驾驶员:葛晨延(16012010) 领航员:张广哲(16012007) 码云:https://gitee.com/happywindmannn/GCYshixun1/tree ...

  3. [软件工程学习笔记]个人java小程序---词频统计(二)

    今天上午的软件工程课讲到了写程序时做单元测试和代码规范的重要性,反观自己每次被程序搞得焦头烂额也是因为这方面习惯不好的原因,等闲暇时再写一篇这方面的文章. 另外,对前一篇博文中的代码也并不是很满意,想 ...

  4. java实验6 词频统计_Java实现的词频统计——单元测试

    前言:本次测试过程中发现了几个未知字符,这里将其转化为十六进制码对其加以区分. 1)保存统计结果的Result文件中显示如图: 2)将其复制到eclipse环境下的切分方法StringTokenize ...

  5. java统计词频算法_Java实现的词频统计——功能改进

    本次改进是在原有功能需求及代码基础上额外做的修改,保证了原有的基础需求之外添加了新需求的功能. 功能: 1. 小文件输入--从控制台由用户输入到文件中,再对文件进行统计: 2.支持命令行输入英文作品的 ...

  6. 采用多种方式实现词频统计

    文章目录 一.利用Java程序实现词频统计 二.利用scala程序实现词频统计 三.利用Python程序实现词频统计 四.利用akka和scala实现词频统计 1.创建AKKAUtils类,提供获取a ...

  7. Flink学习3-WordCount词频统计

    基于Flink开发环境,接下来我们将完成Flink版本的词频统计程序,主要内容如下: 需求描述 功能设计 功能开发 需求升级 针对以上几个步骤,下面将详细展开,读者可根据自身情况有选择阅读. 1. 需 ...

  8. MapRecuce 词频统计案例

    文章目录 初探MapReduce 一.MapReduce核心思想 二.MapReduce编程实例-词频统计思路 1.map阶段(映射) 2.reduce阶段(归并阶段) 三.词频统计编程实现 1.准备 ...

  9. Java实现词频统计(Wordcount)-Map或Hashtable的value排序

    我们在文本操作时,经常需要用到词频统计,并对统计后的词频进行排序,然后输出. 以下是我写的一个供大家参考: package com.qian;import java.io.BufferedReader ...

最新文章

  1. python和R对dataframe的拼接、采样、链式操作:dplyr、tidyr、concat、rbind、cbind、sample、sample_n、set.seed、mutate、filter
  2. MBZUAI大学招生了,Michael Jordan、Raj Reddy等大佬授课
  3. 同时给两个变量值赋值
  4. HTML DOM 第五篇
  5. 【Python初学者】准备
  6. spring-data-mongodb与mongo shell的对应关系
  7. 从支付宝面试题谈:怎样有效减少用户咨询的客服成本
  8. spring依赖注入原理(转载)
  9. centos6.6 安装python环境及Django 1.9.0
  10. 获取request中的查询参数
  11. 数据库优化、数据库基础等常用知识点总结
  12. 使用C#和MSMQ开发消息处理程序
  13. 95-235-040-源码-task-Flink 对用户代码异常处理
  14. ubuntu20.04下开发海康威视网络摄像头sdk(二)云台基本控制(位姿控制)
  15. 190401每日一句
  16. bes2300 tws配对_入门级TWS真无线耳机对比评测,看完之后你就知道怎么买了
  17. Cesium 高性能扩展之DrawCommand(二):OSGB倾斜模型展示应用
  18. 抖音电商广告后台分为哪些?它们其中又有什么区别?
  19. 街头霸王全人物故事背景
  20. 沃趣发布QData T5 性能价格均碾压Exadata

热门文章

  1. linux cp -w,对Linux的cp命令的思考
  2. python获取当前网页元素_python – 如何获取webdriver中元素的当前内容
  3. 尚硅谷和尚学堂的区别_在北京尚学堂学习的009天
  4. 数据库和python的结合_redis数据库及与python交互用法简单示例
  5. mysql登录跳转不了_Session过期后实现自动跳转登录页面
  6. ViewData 和 echarts用法
  7. linux防火墙规则命令意思,linux防火墙iptables配置规则分享
  8. hibernate clob mysql_Hibernate操作Clob类型数据
  9. float 精度_为什么float后面要加f
  10. php curl 无法获取网页内容,php curl获取网页内容(IPV6下超时)的解决办法