zoukankan      html  css  js  c++  java
  • 统计字符串中每种字符出现的评率(HashMap中getOrDefault(K, V)方法的使用)

      为了统计字符串中每种字符出现的频率,使用HashMap这种数据结构。其中,字符作为Key,出现的频率作为Value。
      

      基本算法为:
      1. 将字符串分成字符数组
      2. (1)如果HashMap中的Key没有正在读取的字符,则会插入一个新的Key,赋值为1。
       (2)如果正在读取的字符已经存在于HashMap的Key中,则会将其Value的值+1。
      3. 一直读取到字符数组的最后一位形成最终的HashMap。

      

      关于HashMap中getOrDefault(K, V)方法:
      如果HashMap中含有方法中的Key值,那么则返回原本HashMap中此Key值所对应的Value值;
      相反,如果不包含方法中的Key值的话,则会默认返回方法中规定的Value值。

      

      部分代码如下:

    for(char a:word.toCharArray()) {
        map.put(a,map.getOrDefault(a, 0) + 1);
    }

      如果读取的值在Hashmap中已经存在,则会将getOrDefault(K, V)方法中返回的值+1作为put方法中的Value值覆盖;

      如果不存在的话,getOrDefault(K, V)方法则会返回0,后面+1作为第一次读到此Key的频数,即为1。

      

      代码实现如下(包括HashMap内容的遍历输出):

    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    
    public class countNumber {
        public static void main(String[] args) {
            String word = "banana";
            HashMap<Character, Integer> map = new HashMap<Character, Integer>();
            for(char a:word.toCharArray()) {
                map.put(a,map.getOrDefault(a, 0) + 1);
            }
            Iterator iter = map.entrySet().iterator();
            while (iter.hasNext()) {
                Map.Entry entry = (Map.Entry) iter.next();
                Object key = entry.getKey();
                Object value = entry.getValue();
                System.out.println(key + ":" + value);
            }
        }
    }
  • 相关阅读:
    storm从入门到放弃(三),放弃使用 StreamId 特性
    10、图像的几何变换——平移、镜像、缩放、旋转、仿射变换
    滚动条控件
    控件添加——静态控件、编辑框控件、命令按钮、复选框和单选按钮控件
    9、图像处理基础运算
    控件——静态空间、编辑框控件、命令按钮、复选框和单选控件
    Visual C++.NET设计
    CMD指令及其意义
    OpenCV与QT联合开发示例
    OpenCV基础知识介绍
  • 原文地址:https://www.cnblogs.com/anthonyhoo/p/12520484.html
Copyright © 2011-2022 走看看