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集合练习-记录字母次数思路及代码的更多相关文章

  1. 集合框架-Map集合

    * Map集合和Collection集合的区别? * Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的.可以把这个理解为:夫妻对 * Collection集合存储元素是单独出现的, ...

  2. 集合框架-Map集合-HashMap存储自定义对象

    1 package cn.itcast.p6.hashmap.demo; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 im ...

  3. 集合框架-Map集合重点方法keySet演示

    1 package cn.itcast.p6.map.demo; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import ...

  4. 集合框架-Map集合特点及常用方法

    1 package cn.itcast.p6.map.demo; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import ...

  5. 集合框架-Map集合练习-Map查表法

    1 package cn.itcast.p10.map.test; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 public c ...

  6. 集合框架-Map集合-LinkedHashMap及关联源码操作

    1 package cn.itcast.p9.linkedhashmap.demo; 2 3 import java.util.HashMap; 4 import java.util.Iterator ...

  7. 集合框架-Map集合-TreeMap存储自定义对象

    1 package cn.itcast.p8.treemap.demo; 2 3 4 import java.util.Iterator; 5 import java.util.Map; 6 impo ...

  8. Java集合框架——Map接口

    第三阶段 JAVA常见对象的学习 集合框架--Map集合 在实际需求中,我们常常会遇到这样的问题,在诸多的数据中,通过其编号来寻找某一些信息,从而进行查看或者修改,例如通过学号查询学生信息.今天我们所 ...

  9. Java集合框架Map接口

    集合框架Map接口 Map接口: 键值对存储一组对象 key不能重复(唯一),value可以重复 常用具体实现类:HashMap.LinkedHashMap.TreeMap.Hashtable Has ...

随机推荐

  1. ubuntu用户、用户组设置命令总结

    1.ubuntu创建新用户: sudo adduser username(新建一个用户username) 2.设置用户 username 的密码(设置用户username密码) sudo passwd ...

  2. 【LeetCode】253. Meeting Rooms II 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 排序+堆 日期 题目地址:https://leetco ...

  3. 【LeetCode】1029. Two City Scheduling 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 小根堆 排序 日期 题目地址:https://lee ...

  4. 【LeetCode】155. Min Stack 最小栈 (Python&C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 栈同时保存当前值和最小值 辅助栈 同步栈 不同步栈 日期 题目地 ...

  5. 【LeetCode】743. Network Delay Time 解题报告(Python)

    [LeetCode]743. Network Delay Time 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: ht ...

  6. 记录一次线上OOM调优经历

    现状: k8s 的一个pod 有32G内存,每秒产生新对象的峰值在900Mb ---- 1900Mb(根据jstat计算Eden区获得) . 修改之前的参数 就一个命令行参数是-Xmx31g; 我修改 ...

  7. CycleGAN

    目录 概 主要内容 代码 Zhu J., Park T., Isola P. & Efros A. Unpaired Image-to-Image Translation using Cycl ...

  8. Proximal Algorithms 6 Evaluating Proximal Operators

    目录 一般方法 二次函数 平滑函数 标量函数 一般的标量函数 多边形 对偶 仿射集合 半平面 Box Simplex Cones 二阶锥 半正定锥 指数锥 Pointwise maximum and ...

  9. BP网络简单实现

    目录 BP算法的简单实现 Linear 全连接层 ReLu MSELoss 交叉熵损失函数 BP算法的简单实现 """ BPnet 简易实现 约定输入数据维度为(N, i ...

  10. [高数]高数部分-Part II 导数与微分

    Part II 导数与微分 回到总目录 Part II 导数与微分 一元函数微分的定义 一元函数定义注意点 基本求导公式 基本求导方法 复合函数求导 隐函数求导 对数求导法 反函数求导 参数方程求导 ...