• 哈希映射解决词频


    目录

    题目

    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() - 是否为空集

     

     

  • 相关阅读:
    poetry日常开发使用
    FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx
    论文笔记(整理):轨迹相似度顶会论文中使用的数据集
    C#基础--泛型
    SimpleDateFormat线程不安全和DateTimeFormatter线程安全
    CSS @property,让不可能变可能
    看我为了水作业速通 opengl freeglut!
    socket学习二、accept、read、write函数详解
    Linux ps指令介绍
    吃瓜教程2|线性模型
  • 原文地址:https://blog.csdn.net/qq_63202674/article/details/127604190