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. JAVA直接连接Redis

    引入maven <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</ ...

  2. 【LeetCode】1414. 和为 K 的最少斐波那契数字数目 Find the Minimum Number of Fibonacci Numbers Whose Sum Is K

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

  3. 【LeetCode】823. Binary Trees With Factors 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 相似题目 参考资料 日期 题目地址:htt ...

  4. 【LeetCode】113. Path Sum II 解题报告(Python)

    [LeetCode]113. Path Sum II 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fu ...

  5. Lucky Substrings

    而在26以内且属于fibonacci数列的数为1,2,3,5,8,13,21时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 A string s is LUCKY if ...

  6. CRB and His Birthday(hdu 5410)

    CRB and His Birthday Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  7. .NET6: 三分钟搭建WPF三维应用

    要运行本文中的示例,请先安装Vistual Studio 2022,社区版就可以了. 1 创建项目 选择创建WPF应用 给程序起一个酷酷的名字,选一个酷酷的位置: 选一下.NET6 2 配置项目 从n ...

  8. css 文本基础 实战 小米官方卡片案例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. pytest动态添加命令行参数并获取(钩子函数:pytest_addoption)

    考虑场景: 我们的自动化用例需要支持在不同测试环境运行,有时候在dev环境运行,有时候在test环境运行: 有时候需要根据某个参数不同的参数值,执行不同的业务逻辑: 上面的场景我们都可以通过" ...

  10. Django_环境配置(一)

    一.安装Django # 在CMD中运行 pip install django # 查看djangp版本 python manage.py version 二.创建项目 # 在CMD中运行django ...