• 哈希映射解决词频


    目录

    题目

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

     

     

  • 相关阅读:
    什么是云渲染?【谈谈云渲染和传统渲染农场的区别】
    【STM32】标准库-FMC-SDRAM
    使用Webpack打包TS代码
    大数据Doris(六):编译 Doris遇到的问题
    [MQ] 死信队列介绍与场景描述
    面试官:这就是你理解的Java多线程基础?
    VUE element Tree 没有子级时隐藏展开图标
    算法学习 | day48/60 两个字符串的删除操作/编辑距离
    Android设置TabLayout熟悉及下划线宽度
    ECharts合集
  • 原文地址:https://blog.csdn.net/qq_63202674/article/details/127604190