集合框架-Map集合练习-记录字母次数思路及代码

1 package cn.itcast.p10.map.test;
2
3 import java.util.Iterator;
4 import java.util.Map;
5 import java.util.TreeMap;
6
7 /*
8 * 练习:
9 * "fdgavcbsacdfs"获取该字符串中,每一个字母出现的次数。
10 * 要求打印结果是:a(2)b(1)...;(存在映射关系有字母和次数)
11 * 思路:
12 * 对于结果的分析发现,字母和次数之间存在着映射关系。而且这种关系很多。
13 * 很多就需要存储,能存储映射关系的容器有数组和Map集合
14 * 关系一方是有序编号吗?没有!
15 * 那就是使用Map集合。又发现可以保证唯一性的一方具备着顺序如a,b,c...
16 * 所以可以使用TreeMap集合
17 *
18 * 这个集合中最终应该存储的是字母和次数的对应关系。
19 *
20 * 1,因为操作的是字符串中的字母。所以先将字符串变成字符数组。
21 * 2,遍历字符数组,用每一个字母作为键去查Map集合这个表
22 * 如果该字母键不存在,就将该字母作为键1作为值存储到Map集合中,
23 * 如果该字母键存在,就将该字母键对应值取出并自增+1,再将该字母和加1后的值存储到Map集合中
24 * 键相同值会覆盖。这样就记录了该字母的次数。
25 * 3,遍历结束,Map集合中就记录所有字母的出现的次数。
26 *
27 *
28 */
29 public class MapTest {
30
31 public static void main(String[] args) {
32 // TODO Auto-generated method stub
33 String str = "fdga-22vcbsacdfs";
34
35 String s = getCharCount(str);
36
37 System.out.println(s);
38 }
39
40 private static String getCharCount(String str) {
41 // TODO Auto-generated method stub
42 //将字符串变成字符数组
43 char[] chs = str.toCharArray();
44
45 //定义map集合表
46 Map<Character, Integer> map = new TreeMap<Character,Integer>();
47
48 for (int i = 0; i < chs.length; i++) {
49
50 if (!(chs[i]>='a'&& chs[i]<='z' || chs[i]>='A'&& chs[i]<='Z')) {
51 continue;
52 }
53 //将数组中的字母作为键去查map表。
54 Integer value = map.get(chs[i]);
55
56 int count = 0;
57 //判断值是否为null
58 if (value!=null) {
59 count = value;
60 }
61 count++;
62 map.put(chs[i], count);
63
64 /* int count = 1;
65 //判断值是否为null
66 if (value!=null) {
67 count = value + 1;
68 }
69 map.put(chs[i], count);
70 */
71
72 /*
73 if (value == null) {
74 map.put(chs[i], 1);
75 }else {
76 map.put(chs[i], value+1);
77 }
78 */
79 }
80
81
82
83
84 return mapToString(map);//{a=2, b=1, c=2, d=2, f=2, g=1, s=2, v=1}
85 }
86
87 private static String mapToString(Map<Character, Integer> map) {
88 // TODO Auto-generated method stub
89 StringBuilder sb = new StringBuilder();
90
91 Iterator<Character> it = map.keySet().iterator();
92
93 while (it.hasNext()) {
94 Character key = it.next();
95 Integer value = map.get(key);
96
97 sb.append(key+"("+value+")");
98 }
99 return sb.toString();
100 }
101
102 }
MapTest
集合框架-Map集合练习-记录字母次数思路及代码的更多相关文章
- 集合框架-Map集合
* Map集合和Collection集合的区别? * Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的.可以把这个理解为:夫妻对 * Collection集合存储元素是单独出现的, ...
- 集合框架-Map集合-HashMap存储自定义对象
1 package cn.itcast.p6.hashmap.demo; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 im ...
- 集合框架-Map集合重点方法keySet演示
1 package cn.itcast.p6.map.demo; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import ...
- 集合框架-Map集合特点及常用方法
1 package cn.itcast.p6.map.demo; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import ...
- 集合框架-Map集合练习-Map查表法
1 package cn.itcast.p10.map.test; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 public c ...
- 集合框架-Map集合-LinkedHashMap及关联源码操作
1 package cn.itcast.p9.linkedhashmap.demo; 2 3 import java.util.HashMap; 4 import java.util.Iterator ...
- 集合框架-Map集合-TreeMap存储自定义对象
1 package cn.itcast.p8.treemap.demo; 2 3 4 import java.util.Iterator; 5 import java.util.Map; 6 impo ...
- Java集合框架——Map接口
第三阶段 JAVA常见对象的学习 集合框架--Map集合 在实际需求中,我们常常会遇到这样的问题,在诸多的数据中,通过其编号来寻找某一些信息,从而进行查看或者修改,例如通过学号查询学生信息.今天我们所 ...
- Java集合框架Map接口
集合框架Map接口 Map接口: 键值对存储一组对象 key不能重复(唯一),value可以重复 常用具体实现类:HashMap.LinkedHashMap.TreeMap.Hashtable Has ...
随机推荐
- std::bind与std::ref, why and how
首先解释下为什么有时候需要bind. 我们可以用bind从函数T add(T a, T b)造出个inc()来,即把b写死为1.这个例子本身比较傻,但有不傻的应用. template<typen ...
- 【LeetCode】1111. Maximum Nesting Depth of Two Valid Parentheses Strings 有效括号的嵌套深度
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目讲解 划分规则讲解 返回结果讲解 解题方法 代码 日期 题目地址:ht ...
- 【剑指Offer】数组中重复的数字 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 Set 快慢指针 日期 题目地址:https://leetcod ...
- Problem 2221 RunningMan(fuzoj)
Problem 2221 RunningMan Accept: 130 Submit: 404Time Limit: 1000 mSec Memory Limit : 32768 KB ...
- NetCore实现全局模型绑定异常信息统一处理
本文主要讲解NetCore如何使用中间件捕获模型绑定的异常信息 场景 在.NET Core 中请求中,如果参数的类型错误,我们在控制器的定义的方法是不会执行的,当我们需要捕获模型绑定的异常信息时,可以 ...
- 论文翻译:2020_Acoustic Echo Cancellation by Combining Adaptive Digital Filter and Recurrent Neural Network
论文地址:https://arxiv.53yu.com/abs/2005.09237 自适应数字滤波与循环神经网络相结合的回声消除技术 摘要 回声消除(AEC)在语音交互中起关键作用.由于明确的数学原 ...
- c++—通讯录管理系统
一.运用所学的结构体.地址指针等基础知识,完成通讯录管理系统 二.系统主要有以下6个功能: 1.添加联系人2.显示联系人 3.删除联系人 4.查找联系人5.修改联系人 6.清空联系人 1 #inclu ...
- layedit赋值方法(layedit.setContent赋值时报错-ReferenceError: layedit is not defined)
layedit.setContent赋值时报错 - ReferenceError: layedit is not defined 报错代码: 控制台报错信息 解决方法: 步骤: 1)先赋值: 2)在渲 ...
- K210,yolo,face_mask口罩检测模型训练及其在K210,kd233上部署
前段时间考研,再加上工作,时间很紧,一直没有更新博客,这几天在搞k210的目标检测模型,做个记录,遇到问题可以添加qq522414928或添加微信13473465975,共同学习 首先附上github ...
- linux 之 非root用户安装mysql5.7.27
下载 下载 mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz 详见linux(CentOS7) 之 MySQL 5.7.30 下载及安装. 配置规划 用户: zhj ...