java-统计一段句子中各单词出现的次数

2023-11-01

问题:统计一段句子中各单词出现的次数。

思路:
1、使用split方法将文章进行分割,我们这里以空格、逗号和句点为分隔符,然后存到一个字符串数组中。

2、创建一个hashMap集合,key是字符串类型,保存单词;value是数字类型,保存该单词出现的次数。

3、遍历思路1中的字符串数组,如果key(单词)没有出现过,map中增加一个元素,key为该单词,定义value为1;如果key(单词)出现过,那么value的值加1。

4.遍历输入key及其对应的value值。
具体代码如下:
StrList类,实现统计单词出现次数的方法。

package wordCounts;

import java.util.HashMap;
import java.util.Map.Entry;

public class StrList {
    public  String StatList(String s) {
        StringBuffer sb = new StringBuffer();
        HashMap<String, Integer> has = new HashMap<String,Integer>();//打开哈希表,字符类型储存key(单词),整型储存value(单词出现的次数)
        String[] sList = s.split(" |,|\\.");//使用split方法将字符串s按空格、逗号和句点分割开,并存在字符数组sList中
        for(int i=0; i<sList.length; i++){//遍历sList数组
            if(!has.containsKey(sList[i])){//如果没有这个单词,就将单词存入key里,value值为1;containsKey方法 判断集合中是否包含指定的key
                has.put(sList[i], 1);
            }else{//如果已经存在,就将value值加1;用get方法获取key对应的value值
                has.put(sList[i], has.get(sList[i])+1);
            }
        }
        //使用增强for循环遍历,通过Entry集合访问,可以访问key及其对应的Value值
        for(Entry<String, Integer> entry:has.entrySet()){
            System.out.println(entry.getKey()+":"+entry.getValue());
        }
        return sb.toString();
    }
}

main方法(创建另一个类):
方式一:已经指定好了句子

package wordCounts;
import java.util.Scanner;

public class WordCounts{
    public static void main(String[] args) {
        String sentence = "The most distant way in the world,"
                + "is not the way from birth to the end. "
                + "It is when I stand in front of you,"
                + "but you don't understand I love you.";

        System.out.println(StatList(sentence));
    }

}

方式二:从键盘输入

package wordCounts;
import java.util.Scanner;
public class WordCounts{
    public static void main(String[] args) {
        @SuppressWarnings("resource")
        Scanner scanner = new Scanner(System.in);
        String ab = scanner.nextLine();

        StrList sl = new StrList();
        System.out.println(sl.StatList(ab));
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java-统计一段句子中各单词出现的次数 的相关文章

  • 将键->值的哈希映射“转置”为值->键?

    假设我有一个键 gt 值对的映射 我想反转它 以便我有一个新的映射 它实际上是值 gt 键 即旧值成为新键 旧键成为新值 最好的方法是什么 我正在使用Java 哦 价值观是独一无二的 我个人会用番石榴BiMap https google g
  • 当 HashMap 或 HashSet 达到最大容量时会发生什么?

    就在几分钟前 我回答了一个关于 Java中HashMap的最大可能大小 正如我一直读到的那样 HashMap 是一种可增长的数据结构 它的大小仅受 JVM 内存大小的限制 因此我认为它的大小没有硬性限制并做出了相应的回答 这同样适用于 Ha
  • HashMap 反向排序? [复制]

    这个问题在这里已经有答案了 所以我遇到了这个方法 它能够按值对 HashMap 进行排序 public static
  • HashMap 不可序列化

    HashMap with Serializable键 值应该是Serializable 但这对我不起作用 尝试了其他一些IO流 没有一个有效 有什么建议吗 测试代码 public class SimpleSerializationTest
  • 用数字替换符号

    我想读取一个文件并检测符号后面的字符是数字还是单词 如果是数字 我想删除它前面的符号 将数字翻译成二进制并替换在文件中 如果是一个单词 我想首先将字符设置为数字16 但随后 如果使用另一个单词 我想在原始数字上添加1 这就是我想要的 如果文
  • 当我使用computeIfAbsent计算斐波那契数时,hashmap size()返回错误的值

    我有以下代码 import java math BigInteger import java util HashMap import java util Map public class DynamicFib private static
  • 如何在 Java 中创建哈希表?

    在 Java 中创建哈希表 或关联数组 最直接的方法是什么 我的 google fu 已经出现了几个例子 但是有一个标准的方法来做到这一点吗 有没有一种方法可以用键 gt 值对列表填充表 而无需为每对对象单独调用 add 方法 Map ma
  • 根据键名从 HashMap 获取字符串值

    我有一个HashMap有各种键和值 我怎样才能得到一个值 我在地图上有一把钥匙叫my code 它应该包含一个字符串 我怎样才能得到它而不必遍历地图 到目前为止我已经 HashMap newMap new HashMap paramMap
  • Java HashMap.clear()和remove()内存有效吗?

    考虑以下HashMap clear code Removes all of the mappings from this map The map will be empty after this call returns public vo
  • 为什么Java中的Set数据结构内部使用Map?

    我想知道为什么HashSet http www docjar com html api java util HashSet java html uses HashMap TreeSet uses TreeMap and LinkedHash
  • unordered_map线程安全

    我正在使用 boost thread 库将单线程程序更改为多线程程序 该程序使用 unordered map 作为 hasp map 进行查找 我的问题是 某一时刻 许多线程将进行写入 而另一时刻 许多线程将进行读取 但不会同时进行读取和写
  • 迭代 Hashmap 时如何得到 ConcurrentModificationException?

    我正在尝试将键值对添加到迭代器方法内的哈希映射中 但这并没有给我ConcurrentModificationException Why 由于 Hashmap 是快速失败的 Map
  • Hashmap 单键保存一个类。计算密钥并检索计数器

    我正在开发一个数据库自我项目 我有一个来自以下位置的输入文件 http ir dcs gla ac uk resources test collections cran http ir dcs gla ac uk resources tes
  • clojure 中的反转哈希映射

    我在 clojure 中有哈希映射 key1 value1 key2 value2 key3 value1 我需要将其转换为哈希映射 value1 key1 key3 value2 key2 有 Clojure 方法可以做到这一点吗 clo
  • Ruby - 将数组映射到哈希图

    我有一个数组和一个返回给定值的函数 最终我想创建一个哈希映射 将数组的值作为键值 将 f key value 的结果作为值 是否有一种干净 简单的方法 例如类似于数组的each map 使用块来执行此操作 所以相当于 hsh 1 2 3 4
  • Java - 线程“主”中的异常 java.util.ConcurrentModificationException

    有什么办法可以修改HashMap迭代特定键时的值 下面给出一个示例程序 public static void main String args HashMap
  • 获取带有注释的所有类并将它们添加到 android 中的 hashMap

    我不确定这是否可能 但我基本上希望能够轻松地将新项目添加到列表中 只需添加带有特殊注释的类即可 我能想到的唯一例子就是我目前正在做的事情 用户可以完成很多 挑战 目前我的应用程序中有一个用于 挑战 的包 我希望能够在该包中创建一个新类 给它
  • 初始化 HashMap 的最佳方法

    我通常会这样做 HashMap
  • 在哈希图中存储字符和二进制数

    我正在尝试存储字母到二进制数的映射 这是我的映射 h 001 i 010 k 011 l 100 r 101 s 110 t 111 为此 我创建了一个哈希映射并存储了键值对 我现在想显示给定句子的相应二进制值 这是我的代码 package
  • JSON 中的哈希到底是什么?

    我正在学习 JSON 但我发现你也可以将所谓的 哈希 放入 JSON 中 我在哪里可以找到什么是哈希 或者你能向我解释一下什么是哈希吗 另外 什么是哈希图 我有 C 和 C 经验 正在学习 JS Jquery 和 JSON 哈希是一个稀疏数

随机推荐

  • 2023阿里云学生服务器权益,含Clouder认证:云服务器ECS答案

    文章目录 阿里云学生权益 服务器使用7个月 1 高校计划续费任务 飞天加速计划3 0 2个任务 2 任务1 完成实验 ECS云服务器新手上路 2 2 续费6个月 3 任务2 Apsara Clouder云计算专项技能认证 云服务器ECS入门
  • 爱,死亡和机器人(Love,Death&Robots)

    从我自己的角度来讲 我真的是很喜欢这部短片 奇幻 科幻 喜剧交叉在一起构成了这18部短片 精彩绝伦 我只能这么去形容 但是有没有不足呢 客观的来说 也存在不足 过度的吹捧使得有些人神话了它 认为立意不够 题材老套 但这无法掩盖这部优秀作品的
  • Java创建型模式之原型模式

    原型模式 所谓原型模式 就是以一个对象为原型 返回这个对象的克隆 而不是创建一个新的对象 原型对象的优点 在Java中创建一个新对是昂贵和资源密集型 原型对象有助于创建更好性能的重复对象 原型模式的核心就是克隆 克隆又分为浅克隆 深克隆 1
  • Navicat Premium 15 安装教程

    安装教程 1 鼠标右击 Navicat Premium 15 64bit 压缩包 win11及以上系统需先选择 显示更多选项 选择 解压到 Navicat Premium 15 64bit 2 打开解压后的文件夹 鼠标右击 setup 选择
  • java 获取今天是星期几

    java 获取今天是星期几 public class Test public static void main String args String weekDays 星期日 星期一 星期二 星期三 星期四 星期五 星期六 Calendar
  • SpringBoot 解决跨域问题

    问题描述 启动前端遇到跨域问题 原因分析 后端设置的端口号和前端的端口号不同 此时我的后端端口号为 9090 前端端口号为 8080 导致前后端数据交互不成功报错 解决方案 在Springboot项目里加上这个配置文件CorsConfig
  • Linux CentOS-7 系统 离线安装部署Zabbix--->自定义监控--->短信报警 详细教程

    在内网环境 我们无法连接外网 这个时候想要使用zabbix 就要进行离线安装了 安装部署zabbix有三种方法 一是使用源码安装 二是使用RPM包安装 三是使用容器部署 这里讲的是RPM包安装 可以自己线上下载包 也可以用我已经准备好的RP
  • Past, Present, and Future of Simultaneous Localization and Mapping: Toward the Robust-Perception Age

    这是笔者对这篇论文的翻译 Past Present and Future of Simultaneous Localization and Mapping Toward the Robust Perception Age是一篇SLAM领域的
  • MOSFET导通、关断过程详细分析、损耗分析、米勒效应、datasheet解释

    一 MOSFET导通 关断过程详细分析 转 详见下 MOSFET导通 关断过程详细分析 转 知乎 二 弄懂mosfet的导通过程和损耗分析 详见下 弄懂MOS管的导通过程和损耗分析 三 MOSFET datasheet 的数据解释 深入理解
  • linux下用eclipse编译c++的pthread多线程配置

    问题 eclipse使用pthread h遇到 pthread create 未定义的问题 解决方法 a 需要在编译时添加 lpthread参数 g XXXXX cpp lpthread o XXXXX o b 在eclipse中配置 pr
  • Excel VBA宏

    一 宏与VBA 什么是宏与VBA VBA Visual Basic for Applications 是 Visual Basic https baike baidu com item Visual Basic 的一种宏语言 是在其桌面应用
  • Spring Boot中JSON的数据结构和交互讲解以及实战(超详细 附源码)

    Spring MVC在数据绑定的过程中 需要对传递数据的格式和类型进行转换 它既可以转换String登类型的数据 也可以转换JSON等其他类型的数据 JSON数据结构 JSON JavaScript Object Notation JS对象
  • 吃透Chisel语言.10.Chisel项目构建、运行和测试(二)——Chisel中生成Verilog代码&Chisel开发流程

    Chisel项目构建 运行和测试 二 Chisel中生成Verilog代码 Chisel开发流程 上一篇文章我们提到了怎么用sbt构建Chisel项目并运行Chisel代码 但是毕竟还是在电脑上运行的 而在实践中 我们写的Chisel代码最
  • 51nod-1101 换零钱

    时间限制 1 秒 空间限制 65536 KB 分值 20 N元钱换为零钱 有多少不同的换法 币值包括1 2 5分 1 2 5角 1 2 5 10 20 50 100元 例如 5分钱换为零钱 有以下4种换法 1 5个1分 2 1个2分3个1分
  • FreeRTOS 临界段和开关中断

    以下转载自安富莱电子 http forum armfly com forum php 临界段代码的临界段也称为临界区 一旦这部分代码开始执行 则不允许任何中断打断 为确保临界段代码的执行不被中断 在进入临界段之前须关中断 而临界段代码执行完
  • AIGC来了,品牌方开始要求降价|AI重塑未来营销

    AIGC正在重塑营销领域 为品牌带来新的解决方案 营销可能是最早与AIGC结合并产生实际落地效果的领域之一 然而 需要注意AI工具的局限性和过度精准投放的影响 个性化的营销内容重要 但难以塑造国民级品牌 在AI时代 品牌需要找到自己的最大公
  • pycharm安装教程(安装必看)

    文章目录 软件简介 一 pycharm下载 二 安装 三 使用pycharm 软件简介 PyCharm是一种Python IDE Integrated Development Environment 集成开发环境 带有一整套可以帮助用户在使
  • fstat函数及struct stat结构

    转载地址 点击打开链接 一 fstat 函数 功能 由文件描述符取得文件状态 相关函数 stat lstat chmod chown readlink utime 头文件 include
  • Kettle_js脚本_示例

    Kettle 版本7 0 一 String function 1 date2str js操作时间 var dValue new Date 把时间变成字符串 var dValue1 date2str dValue 把时间变成当前格式字符串 v
  • java-统计一段句子中各单词出现的次数

    问题 统计一段句子中各单词出现的次数 思路 1 使用split方法将文章进行分割 我们这里以空格 逗号和句点为分隔符 然后存到一个字符串数组中 2 创建一个hashMap集合 key是字符串类型 保存单词 value是数字类型 保存该单词出