为了统计字符串中每种字符出现的频率,使用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);
}
}
}

最新文章

  1. [转载]抓包,端口镜像,monitor session命令(转)
  2. 知方可补不足~UPDLOCK更新锁的使用
  3. Win10 下使用 ionic 框架开发 android 应用之搭载开发环境
  4. JAVA 对象拷贝
  5. Android菜鸟的成长笔记(5)——Android系统源代码你下载了吗?
  6. css,js工具篇
  7. 怎样让外界无法改变自定义view的尺寸大小
  8. redhat安装vsftpd
  9. String类用法总结
  10. 网络安全实验室--SQL注入关
  11. SQL,group by分组后分别计算组内不同值的数量
  12. linux iscsi挂载与卸载
  13. CSS小知识-----前缀-moz-、-ms-、-webkit-,-o-分别代表的意思
  14. 20155330 《网络对抗》 Exp8 Web基础
  15. poj 3463 次短路
  16. Flume-NG一些注意事项(转)
  17. LWIP
  18. MyBatis学习4---使用MyBatis_Generator生成Dto、Dao、Mapping
  19. Linux GNU C
  20. 转: Java安全停止线程方法

热门文章

  1. iOS 引用计数
  2. iOS 内存管理:从 MRC 到 ARC 实践
  3. Python实现压缩解压缩,移动复制copy文件
  4. springBoot集成zuul路由forward,设置setSendZuulResponse无效
  5. 【Java技术系列】爱情36技之记忆永存
  6. java中eclipse的安装和JDK的环境变量的配置以及记事本的使用
  7. 拿万元月薪必备的书单,学JAVA的程序员必看的5本书!
  8. PTA数据结构与算法题目集(中文) 7-19
  9. 好玩Python——PIL项目实训
  10. javascript入门 之 zTree(十一 托拽事件(一))