• 哈希映射解决词频


    目录

    题目

    new HashMap() 和new HashMap()的区别,string>

     知识点讲解 

    1、哈希映射 

    2、哈希集合 


    题目

    词频统计:现有一段文本如下:“From/tomorrow/on/I/ will/be/a/happy/person/From/tomorrow/on/I/will/care/foodstuff/and/vegetables”。试用HashMap实现对文本中出现的单词词频进行统计,并对统计结果进行输出显示,如“I:2”,表示单词“I”在文本中出现了两次。

    1. package Edit;
    2. import java.util.*;
    3. public class WordFrequenc {
    4. public static void main(String[] args) {
    5. //定义字符串类型并输入字符串
    6. String str;
    7. str = "From/tomorrow/on/I/ will/be/a/happy/person/From/tomorrow/on/I/will/care/foodstuff/and/vegetables";
    8. //replaceAll(" ", "")可以清除两端以及中间的空格,注意小括号里的格式
    9. str = str.replaceAll(" ", "");
    10. //定义词频统计哈希映射<>里是Map里面的元素的类型,不写默认为Object类型的, 取出来的时候的时候要向下转型
    11. Map<String,Integer> map = new HashMap<>();
    12. //将字符串安卓‘/’拆分
    13. String[] words = str.split("/");
    14. //遍历但从数组,将单词进行计数
    15. for (String word : words) {
    16. /*put(key, value) - 添加元素(键值对)
    17. get(key) - 按键取值
    18. containsKey(key) - 判断是否包含某个键*/
    19. map.put(word, map.containsKey(word)? map.get(word)+1 : 1);
    20. // System.out.println(map);//HashMap输出为字典类型
    21. }
    22. //按照格式输出keySet() - 键集合
    23. for(String key : map.keySet()) {
    24. System.out.println(key+":"+map.get(key));
    25. }
    26. }
    27. }

     

    new HashMap() 和new HashMap()的区别

    使用 Map 的时候发现好多地方是这样实例化的:new HashMap() , 就是把Map里面的元素的类型也写进去?写和不写有啥区别?性能上有没有好处?

    回答:
    在运行期没有任何区别, java的泛型只在编译期有效, 只是为了写代码的时候多一些约束少一些出错而已,

    木得区别,还是推荐指定类型,一如楼上所说多一些约束,二是取值的时候更省事,不用显式类型转换,最重要的一点是提高代码可读性。

    new HashMap(),放进去的元素默认是Object类型的, 取出来的时候的时候要向下转型,容易发生错误啊,加上泛型,编译时就能确定类型了。

     知识点讲解 


    1、哈希映射 


    put(key, value) - 添加元素(键值对)

    get(key) - 按键取值

    containsKey(key) - 是否包含某个键

    keySet() - 键集合

    values() - 值集合 


    2、哈希集合 


    add(e) - 添加元素

    remove(e) - 移除元素

    size() - 集合元素个数

    isEmpty() - 是否为空集

     

     

  • 相关阅读:
    函数重入、函数重载、函数重写自己理解
    servletContext 对象的解释
    python可以考的资格认证有哪些?
    mysql启动报错The server quit without updating PID file几种解决办法
    Linux操作系统——安装RPM包或源码包
    Vue(Vuex插件)
    Shellshock 远程命令注入 (CVE-2014-6271)漏洞复现
    学习记录: requests 不同请求方式传参和常用的方法
    高通WLAN框架学习(31)-- Power save
    【ffmpeg】视频解码器
  • 原文地址:https://blog.csdn.net/qq_63202674/article/details/127604190