集合框架-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 ...
随机推荐
- ubuntu用户、用户组设置命令总结
1.ubuntu创建新用户: sudo adduser username(新建一个用户username) 2.设置用户 username 的密码(设置用户username密码) sudo passwd ...
- 【LeetCode】253. Meeting Rooms II 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 排序+堆 日期 题目地址:https://leetco ...
- 【LeetCode】1029. Two City Scheduling 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 小根堆 排序 日期 题目地址:https://lee ...
- 【LeetCode】155. Min Stack 最小栈 (Python&C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 栈同时保存当前值和最小值 辅助栈 同步栈 不同步栈 日期 题目地 ...
- 【LeetCode】743. Network Delay Time 解题报告(Python)
[LeetCode]743. Network Delay Time 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: ht ...
- 记录一次线上OOM调优经历
现状: k8s 的一个pod 有32G内存,每秒产生新对象的峰值在900Mb ---- 1900Mb(根据jstat计算Eden区获得) . 修改之前的参数 就一个命令行参数是-Xmx31g; 我修改 ...
- CycleGAN
目录 概 主要内容 代码 Zhu J., Park T., Isola P. & Efros A. Unpaired Image-to-Image Translation using Cycl ...
- Proximal Algorithms 6 Evaluating Proximal Operators
目录 一般方法 二次函数 平滑函数 标量函数 一般的标量函数 多边形 对偶 仿射集合 半平面 Box Simplex Cones 二阶锥 半正定锥 指数锥 Pointwise maximum and ...
- BP网络简单实现
目录 BP算法的简单实现 Linear 全连接层 ReLu MSELoss 交叉熵损失函数 BP算法的简单实现 """ BPnet 简易实现 约定输入数据维度为(N, i ...
- [高数]高数部分-Part II 导数与微分
Part II 导数与微分 回到总目录 Part II 导数与微分 一元函数微分的定义 一元函数定义注意点 基本求导公式 基本求导方法 复合函数求导 隐函数求导 对数求导法 反函数求导 参数方程求导 ...