Java基础知识强化之集合框架笔记61:Map集合之统计字符串中每个字符出现的次数的案例
1. 首先我们看看统计字符串中每个字符出现的次数的案例图解:
2. 代码实现:
(1)需求 :"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)
分析:
A: 定义一个字符串(可以改进为键盘录入)
B: 定义一个TreeMap集合
键: Character
值:Integer
C: 把字符串转换为字符数组
D: 遍历字符数组,得到每一个字符
E: 拿刚才得到的字符作为键到集合中去找值,看返回值
是null:说明该键不存在,就把该字符作为键,1作为值存储
不是null:说明该键存在,就把值加1,然后重写存储该键和值
F: 定义字符串缓冲区变量
G:遍历集合,得到键和值,进行按照要求拼接
H:把字符串缓冲区转换为字符串输出
录入:linqingxia
结果:result:a(1)g(1)i(3)l(1)n(2)q(1)x(1)
(2)代码实现:
package cn.itcast_05; import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap; /*
* 需求 :"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)
*
* 分析:
* A:定义一个字符串(可以改进为键盘录入)
* B:定义一个TreeMap集合
* 键:Character
* 值:Integer
* C:把字符串转换为字符数组
* D:遍历字符数组,得到每一个字符
* E:拿刚才得到的字符作为键到集合中去找值,看返回值
* 是null:说明该键不存在,就把该字符作为键,1作为值存储
* 不是null:说明该键存在,就把值加1,然后重写存储该键和值
* F:定义字符串缓冲区变量
* G:遍历集合,得到键和值,进行按照要求拼接
* H:把字符串缓冲区转换为字符串输出
*
* 录入:linqingxia
* 结果:result:a(1)g(1)i(3)l(1)n(2)q(1)x(1)
*/
public class TreeMapDemo {
public static void main(String[] args) {
// 定义一个字符串(可以改进为键盘录入)
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String line = sc.nextLine(); // 定义一个TreeMap集合
TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>(); //把字符串转换为字符数组
char[] chs = line.toCharArray(); //遍历字符数组,得到每一个字符
for(char ch : chs){
//拿刚才得到的字符作为键到集合中去找值,看返回值
Integer i = tm.get(ch); //是null:说明该键不存在,就把该字符作为键,1作为值存储
if(i == null){
tm.put(ch, 1);
}else {
//不是null:说明该键存在,就把值加1,然后重写存储该键和值
i++;
tm.put(ch,i);
}
} //定义字符串缓冲区变量
StringBuilder sb= new StringBuilder(); //遍历集合,得到键和值,进行按照要求拼接
Set<Character> set = tm.keySet();
for(Character key : set){
Integer value = tm.get(key);
sb.append(key).append("(").append(value).append(")");
} //把字符串缓冲区转换为字符串输出
String result = sb.toString();
System.out.println("result:"+result);
}
}
运行效果,如下:
Java基础知识强化之集合框架笔记61:Map集合之统计字符串中每个字符出现的次数的案例的更多相关文章
- Java基础知识强化之IO流笔记53:IO流练习之 自定义类模拟BufferedReader的readLine()功能案例
1. 用Reader模拟BufferedReader的readLine()功能: readLine():一次读取一行,根据换行符判断是否结束,只返回内容,不返回换行符 2. 代码实现和思路分析: ...
- Java基础知识强化之IO流笔记61:输入流 和 输出流 使用总结
1. 结构: 字节流:InputStream,OutputStream 字符流:Reader,Writer 2. 字符流 和 字节流: (1)Reader:读取字符流的抽象类 BufferedRead ...
- Java 13天基础 06天map集合小练习(黑马程序员) 统计字符串中每个字符出现的次数 (经典面试题)
import java.util.HashMap; import java.util.Map; import java.util.Scanner; /** * 目标 : 输出一个字符串中每个字符出现的 ...
- Java中统计字符串中各个字符出现的次数
import java.util.Iterator; import java.util.Set; import java.util.TreeMap; public class TreeMapDemo ...
- Java基础知识强化之IO流笔记68:Properties和IO流集合使用
1. Properties和IO流集合使用 这里的集合必须是Properties集合: public void load(Reader reader):把文件中的数据读取到集合中 public v ...
- Java基础知识强化之IO流笔记66:Properties的概述 和 使用(作为Map集合使用)
1. Properties的概述 Properties:属性集合类.是一个可以和IO流相结合使用的集合类. 该类主要用于读取以项目的配置文件(以.properties结尾的文件 和 xml文件). ...
- Java基础知识强化之IO流笔记51:IO流练习之 键盘录入学生信息按照总分排序写入文本文件中的案例
1. 键盘录入学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分排序写入文本文件中 分析: A:创建学生类 B:创建集合对象 TreeSet<Student> ...
- Java基础知识强化之IO流笔记64:合并流SequenceInputStream
1. SequenceInputStream合并流的概述: SequenceInputStream类可以将多个输入流串联在一起,合并为一个输入流,因此,该流也被称为合并流. 2. Sequence ...
- Java基础知识强化之IO流笔记52:IO流练习之 把一个文件中的字符串排序后再写入另一个文件案例
1. 把一个文件中的字符串排序后再写入另一个文件 已知s.txt文件中有这样的一个字符串:"hcexfgijkamdnoqrzstuvwybpl" 请编写程序读取数据内容,把数据排 ...
随机推荐
- FFMPEG之TimeBase成员理解
http://blog.csdn.net/supermanwg/article/details/14521869
- 使用Qt实现简单的图片预览效果 good
http://www.cnblogs.com/appsucc/archive/2012/02/28/2371506.html Qt之实现工具箱界面程序 http://www.cnblogs.com/a ...
- Android开源项目发现---ProgressBar 篇(持续更新)
1. SmoothProgressBar 水平进度条 项目地址:https://github.com/castorflex/SmoothProgressBar Demo地址:https://play. ...
- vs2010自带的报表
本例用来显示Northwind中的order details表中的数据交分组 1.建立一WinForm程序,并建立一数据库连接,选择order details表,此时会自动建立一个xsd的数据集类,如 ...
- nyist 740 “炫舞家“ST(动态规划)
dp[i][j][k]:表示第i次踩踏后两脚的位置j,k 先固定一只脚的位置j,第i次踩踏后,状态为dp[i][j][a[i]]或者dp[i][a[i]][j],其中a[i]表示第i个输入的元素,则有 ...
- WCF 托管在IIS中遇到Http的错误
IIS8中部署WCF服务出错:HTTP 错误 404.3 - Not Found http://www.cnblogs.com/xwgli/archive/2013/03/15/2961022.htm ...
- WordPress Quick Paypal Payments插件HTML注入漏洞
漏洞名称: WordPress Quick Paypal Payments插件HTML注入漏洞 CNNVD编号: CNNVD-201310-491 发布时间: 2013-10-22 更新时间: 201 ...
- win8 mysqlzip install
1. 下载MySQL Community Server 5.6.142. 解压MySQL压缩包 将以下载的MySQL压缩包解压到自定义目录下.3. 添加环境变量 变量名:MYSQL_HOME 变量值: ...
- Suse系统用户不能登录报错
Linux系统用户创建了user用户,使用putty登陆系统,用户为user,系统登陆报 错: Could not chdir to home directory /home/user: Permis ...
- JavaScript高级程序设计49.pdf
HTML5事件 contextmenu事件 contextmenu事件是冒泡的,可以将事件处理程序指定到document,这个事件的目标是用户操作的元素,在兼容DOM的浏览器中使用event.prev ...