Java——检索一段话中出现次数最多的英文单词
今日看到一个题目,要求在给出的一段话中检索出出现频率最高的单词。现在此分享。
题目:
在下面这段话中,检索出出现次数最多的英文单词:
Look to the skies above London and you’ll see the usual suspects rainclouds, plane and pigeons. But by the end of the year, you might just see something else.
思路:
可以看到,这一段话中包含英文单词、空格、标点符号三种字符,若需要统计单词数,需要将标点符号、空格省略掉
做法:
1、在整个字符串中,先将标点符号替换成空格
2、将字符串按空格(一个或多个)分割
3、统计每个单词出现的次数
实现方法一:
package count;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class Count {public static void main(String[] args) {long start = System.currentTimeMillis();String str = "Look to the skies above London and you'll see the usual suspects rainclouds, plane and pigeons. But by the end of the year, you might just see something else.";str = str.replace('\'', ' ');//将'号用空格替换str = str.replace(',', ' ');//将逗号用空格替换str = str.replace('.', ' ');//将句号用空格替换String[] strings = str.split("\\s+"); // “\\s+”代表一个或多个空格,是正则表达式
// String[] strings = str.split(" +"); // “ +”在我的机器上也能代表一个或多个空格Map<String, Integer> map = new HashMap<String, Integer>();List<String> list = new ArrayList<String>();//存储每个不重复的单词for(String s : strings){if(map.containsKey(s)){//如果map中已经包含该单词,则将其个数+1int x = map.get(s);x++;map.put(s, x);}else{ //如果map中没用包含该单词,代表该单词第一次出现,则将其放入map并将个数设置为1map.put(s, 1);list.add(s);//将其添加到list中,代表它是一个新出现的单词}}int max=0;//记录出现次数最多的那个单词的出现次数String maxString = null;//记录出现次数最多的那个单词的值/** 从list中取出每个单词,在map中查找其出现次数* 并没有真正排序,而只是记录下出现次数最多的那个单词*/for(String s : list){int x = map.get(s);if(x>max){maxString = s;max = x;}}System.out.println(maxString);long end = System.currentTimeMillis();System.out.println("共耗时:" + (end - start) + "毫秒");}
}
实现方法二:
将map中的元素转换成用“键值对”表示的Entry,然后用一个列表(List)存储所有的Entry。
再使用Collections.sort()方法对List进行排序,并自己实现Comparator接口的方法。
package count;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;public class Count2 {public static void main(String[] args) {long start = System.currentTimeMillis();String str = "Look to the skies above London and you'll see the usual suspects rainclouds, plane and pigeons. But by the end of the year, you might just see something else.";str = str.replace('\'', ' ');str = str.replace(',', ' ');str = str.replace('.', ' ');String[] strings = str.split("\\s+");// “\\s+”代表一个或多个空格,是正则表达式/** 跟方法一一样 ,先存储每个单词及其个数* */Map<String, Integer> map = new HashMap<String, Integer>();for(String s : strings){if(map.containsKey(s)){int x = map.get(s);x++;map.put(s, x);}else{map.put(s, 1);}}/** 构造一个包含“键值对”的List* */List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());/** 对List进行排序* 自己实现一个Comparator的匿名内部类,并实现compare方法* 使其根据出现的次数降序排列(因为我们需要的是出现最多的单词)* */Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {@Overridepublic int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {//降序排列return o2.getValue() - o1.getValue();}});/** 输出出现次数最多的单词* */System.out.println(list.get(0).getKey());long end = System.currentTimeMillis();System.out.println("共耗时:" + (end - start) + "毫秒");}
}
Java——检索一段话中出现次数最多的英文单词相关推荐
- Java实现找出数组中重复次数最多的元素以及个数
/**数组中元素重复最多的数* @param array* @author shaobn* @param array*/public static void getMethod_4(int[] arr ...
- python 在某段文章中确定一段话中每个词出现的次数,并排序
#-*- coding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding("gbk") import numpy as ...
- 一段话中手机号中间四位做特殊处理
最近接到了编辑这样的需求--『手机号做特殊处理,中间四位替换为*』并且给出了常见的联系方式: Ø 正常联系方式 l 网上颇有知名度的当地导游王家乐(15274422092 ),QQ:(14536 ...
- java数组出现次数最多的数_找出数组中出现次数最多的那个数——主元素问题...
方法一:以空间换时间,可以定义一个计数数组int count[101],用来对数组中数字出现的次数进行计数(只能针对数组中数字的范围1~100),count数组中最大的元素对应的下标,即为出现次数最多 ...
- python判断一个或者多个字符串,是否出现在一段话中
python判断一个或者多个字符串,是否出现在一段话中 要判断一段话中是否有几个字符串,只要一个出现就为True,刚开始想用map函数,后来发现也挺麻烦. 查了一些资料,发现用 any比较好 比如 p ...
- Java求字符串中出现次数最多的字符
Java求字符串中出现次数最多的字符 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/51933611 Java ...
- java统计每个单词单词出现的次数_Java统计英文句子中出现次数最多的单词并计算出现次数的方法...
本文实例讲述了Java统计英文句子中出现次数最多的单词并计算出现次数的方法.分享给大家供大家参考,具体如下: import java.util.*; /** * 统计出现次数最多的单词和它出现的次数 ...
- 重复最多字符次数java_利用Java实现求字符串中出现次数最多的字符及次数
利用Java实现求字符串中出现次数最多的字符及次数 发布时间:2020-11-12 16:57:24 来源:亿速云 阅读:108 作者:Leah 这篇文章将为大家详细讲解有关利用Java实现求字符串中 ...
- java 单词出现次数_Java统计英文句子中出现次数最多的单词并计算出现次数的方法...
搜索热词 本文实例讲述了Java统计英文句子中出现次数最多的单词并计算出现次数的方法.分享给大家供大家参考,具体如下: import java.util.*; /** * 统计出现次数最多的单词和它出 ...
最新文章
- kubernetes 中 label的作用_Kubernetes生产环境的16条建议
- python获取mysql数据为excel中的sheet_python 从excel、csv、mysql、txt获取数据源
- GAN全套学习笔记/论文
- CSocket,CAsyncSocket多线程退出时的一些注意事项(解决关闭WinSoket崩溃的问题)
- 你真的理解 Integer 的缓存问题吗?| CSDN 博文精选
- JavaSE: SuppressWarnings[转]
- 布线规划要点-开始设计前必须考虑的几个问题
- 一次多线程臭虫经验——异步日志c++化时
- freemarker mysql 生成bean_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.6.6版)...
- python初识(2)
- 学习JSON的神级网站www.bejson.com
- 起底量化交易的发展之路
- 一个应用范德蒙行列式的例子
- 朴素贝叶斯分类器常用的三种条件概率模型:伯努利、多项式、高斯模型
- ***WIN2003 PHP服务器的另类技术
- 第二周教学课件及实验任务已发布!
- Linux操作系统之安装Linux虚拟机
- UVa1395(最小值最小生成树+并查集)
- 公开在线讲座|Tamer Özsu教授:图处理-全景式视角和开放性问题
- Wifi密码 (10分)
热门文章
- win10系统下nodejs安装及环境配置
- yolact-训练自己的数据集
- 基于图像处理的工具尺寸测量
- 备品管理方案怎么写_设备借用管理制度
- perl mysql 数据推拉_用perl 从mysql取出数据做统计分析代码
- 还记得Microsoft PowerToys吗? Windows 10正在获取它们
- 【Python3爬虫(二)】【urlib.request模块】【付费代理+auth认证】
- windows删除文件失败、文件访问被拒绝,需要system的权限
- 2023年厦门大学有机化学专业考研上岸前辈备考经验指导
- SLAM及深度学习环境配置总教程