集合框架-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 ...
随机推荐
- springboot 整合activemq
1.配置连接信息 spring: activemq: broker-url: tcp://192.168.1.28:61616 user: admin password: 123456 package ...
- JAVA获取某个月(当月)第一天的开始时刻和某个月(当月)最后一天的最后时刻
package com.date; import java.text.SimpleDateFormat; import java.util.Calendar; public class Test { ...
- html5调用摄像头截图
关于html5调用音视频等多媒体硬件的API已经很成熟,不过一直找不到机会把这些硬件转化为实际的应用场景,不过近年来随着iot和AI的浪潮,我觉得软硬结合的时机已经成熟.那我们就提前熟悉下怎么操作这些 ...
- IDEA安装vue.js插件后,new没有Vue component
首先要安装vue相关的插件vue.js 但是很多人安装vue.js右键发现没有vue Componment,解决方法如下 Settings>Editor>File and Code Tem ...
- Codeforce 633C. Spy Syndrome 2
C. Spy Syndrome 2 time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- 第二十四个知识点:描述一个二进制m组的滑动窗口指数算法
第二十四个知识点:描述一个二进制m组的滑动窗口指数算法 简单回顾一下我们知道的. 大量的密码学算法的大数是基于指数问题的安全性,例如RSA或者DH算法.因此,现代密码学需要大指数模幂算法的有效实现.我 ...
- Augmentation For GAN
目录 概 主要内容 Differentiable Augmentation Adaptive Augmentation 代码 Zhao S., Liu Z., Lin J., Zhu J. and H ...
- pandas tutorial 2
@ 目录 Group_By 对数据进行分组 对 group进行迭代 选择一个group get_group() Aggregations 在group的基础上传入函数整合 Transformation ...
- 编写Java程序,车站只剩 50 张从武汉到北京的车票,现有 3 个窗口售卖,用程序模拟售票的过程,使用Runnable解决线程安全问题
查看本章节 查看作业目录 需求说明: 车站只剩 50 张从武汉到北京的车票,现有 3 个窗口售卖,用程序模拟售票的过程,要求使用同步方法保证售票过程中票数的正确性 实现思路: 创建 Java 项目,在 ...
- JZOJ 3296 Luogu P3296 [SDOI2013]刺客信条
前言 做法来自:@pzrpzr ,写一下!Orz pzr! 题目大意 \(n\) 个点的无根树,每个点有两个 \(0/1\) 权值,合适地安排节点在同构树中的顺序,使得前后对应的权值不同节点个数最小, ...