JAVA使用可变长度数组设计一个类型,提供如下方法 提示 要统计每个单词出现的次数,由于一个方法不能返回2种类型,我们需要把单词和它的出现次数封装到一个类中 去,所以,可以定义一个类型如下: 由于我们统计的有多个单词,所以,我们上面的 countSize 方法的返回类型就可以设计成 WordBean[],如下: public class PatternDemo { //此方法用来统计 content 中的英文单词个数, 请使用正则表达式来做,单词的正则表达式请自行编写, public int countWords(CharSequence content) { ... } //此方法返回一串固定的字符串,已写好,可以直接用。 public StringBuilder getContent() { //此方法的内容如下: StringBuilder builder = new StringBuilder(); builder.append("Hooray! It's snowing! It's time to make a snowman.James runs out. He makes a big pile of snow. He puts a big snowball on top. He adds a scarf and a hat. He adds an orange for the nose. He adds coal for the eyes and buttons.In the evening, James opens the door. What does he see? The snowman is moving! James invites him in. The snowman has never been inside a house. He says hello to the cat. He plays with paper towels.A moment later, the snowman takes James's hand and goes out.They go up, up, up into the air! They are flying! What a wonderful night!The next morning, James jumps out of bed. He runs to the door.He wants to thank the snowman. But he's gone."); // return builder; } //此方法统计出每个单词[不考虑大小写]出现的次数,数据结构请自行定义,设计如下: public ? countSize(CharSequence content) { //TODO ... } //注:? 处是你需要去思考,该设计什么结构来存放结果 } public class WordBean { //属性 private String word; //单词 private int count; //出次 //TODO 请自行完成构造、getter/setter、toString、等相关方法 } public WordBean[] countSize(CharSequence content) { //TODO ... } 最后写一个调用者类,来测试你的实现,如下: public class UsePatternDemo() { public static void main(String[] args) { //TODO ... }

时间: 2024-02-23 19:03:26 浏览: 22
好的,根据你的要求,我来为你解答。这里给出一个参考实现: ```java import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; public class PatternDemo { //此方法用来统计 content 中的英文单词个数, 请使用正则表达式来做,单词的正则表达式请自行编写, public int countWords(CharSequence content) { String regex = "\\b[a-zA-Z]+\\b"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(content); int count = 0; while (matcher.find()) { count++; } return count; } //此方法返回一串固定的字符串,已写好,可以直接用。 public StringBuilder getContent() { StringBuilder builder = new StringBuilder(); builder.append("Hooray! It's snowing! It's time to make a snowman.James runs out. He makes a big pile of snow. He puts a big snowball on top. He adds a scarf and a hat. He adds an orange for the nose. He adds coal for the eyes and buttons.In the evening, James opens the door. What does he see? The snowman is moving! James invites him in. The snowman has never been inside a house. He says hello to the cat. He plays with paper towels.A moment later, the snowman takes James's hand and goes out.They go up, up, up into the air! They are flying! What a wonderful night!The next morning, James jumps out of bed. He runs to the door.He wants to thank the snowman. But he's gone."); return builder; } //此方法统计出每个单词[不考虑大小写]出现的次数 public WordBean[] countSize(CharSequence content) { String regex = "\\b[a-zA-Z]+\\b"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(content); Map<String, Integer> map = new HashMap<>(); while (matcher.find()) { String word = matcher.group().toLowerCase(); if (map.containsKey(word)) { int count = map.get(word); map.put(word, count + 1); } else { map.put(word, 1); } } WordBean[] result = new WordBean[map.size()]; int i = 0; for (Map.Entry<String, Integer> entry : map.entrySet()) { String word = entry.getKey(); int count = entry.getValue(); WordBean bean = new WordBean(word, count); result[i++] = bean; } Arrays.sort(result); return result; } } class WordBean implements Comparable<WordBean> { private String word; private int count; public WordBean(String word, int count) { this.word = word; this.count = count; } public String getWord() { return word; } public void setWord(String word) { this.word = word; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } @Override public String toString() { return word + ": " + count; } @Override public int compareTo(WordBean o) { return Integer.compare(o.count, this.count); } } class UsePatternDemo { public static void main(String[] args) { PatternDemo demo = new PatternDemo(); StringBuilder content = demo.getContent(); WordBean[] result = demo.countSize(content); for (WordBean bean : result) { System.out.println(bean); } } } ``` 在这个实现中,我们首先使用正则表达式统计了一个字符串中的英文单词个数。然后,我们定义了一个 `WordBean` 类来封装单词和它的出现次数。接着,我们使用 `Map` 来存储每个单词出现的次数,并将结果封装到 `WordBean` 数组中返回。最后,我们对结果进行了按出现次数降序排序,并在测试类中进行了输出。

相关推荐

最新推荐

recommend-type

Java实现读取键盘输入保存到txt文件,再统计并输出每个单词出现次数的方法

主要介绍了Java实现读取键盘输入保存到txt文件,再统计并输出每个单词出现次数的方法,涉及java文件I/O操作及字符串遍历、运算实现统计功能相关技巧,需要的朋友可以参考下
recommend-type

JAVA JDK8 List分组获取第一个元素的方法

今天小编就为大家分享一篇关于JAVA JDK8 List分组获取第一个元素的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
recommend-type

Java数组传递及可变参数操作实例详解

主要介绍了Java数组传递及可变参数操作,结合实例形式详细分析了java数组参数传递与可变参数相关使用技巧,需要的朋友可以参考下
recommend-type

java统计字符串中指定元素出现次数方法

主要介绍了java统计字符串中指定元素出现次数方法,需要的朋友可以参考下
recommend-type

Spring MVC配置双数据源实现一个java项目同时连接两个数据库的方法

主要给大家介绍了关于Spring MVC如何配置双数据源实现一个java项目同时连接两个数据库的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。