map练习小例题
"fdgavcbsacdfs" 获取该字符串中,每一个字母出现的次数。 要求打印结果是:a(2)b(1)...; 思路:
对于结果的分析发现,字母和次数之间存在着映射关系。而且这种关系很多。 很多就需要存储,能存储映射关系的容器有数组和Map集合。
关系一方式中是有序编号吗?有就使用数组,没有!那就是使用Map集合。 又发现可以保证唯一性的一方具备着顺序如a b c.....
所以可以使用TreeMap集合。
这个集合中应该存储的是字母和次数的对应关系。
1,因为操作的是字符串中的字母,所以先将字符串变成一个字符数组。 2,遍历字符数组,用每一个字母作为键去查Map集合这个表。
如果该字母键不存在,就将该字母作为键1作为值存储到Map集合中,代表出现一次。
如果该字母键存在,就将该字母键对应值取出并自增,再将该字母和自增后的值存储到Map集合中, 键相同值会覆盖,这样就记录住了该字母的次数。
3,遍历结束,Map集合就记录所有字母的出现的次数。
package exmap; import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap; public class ExMap { public static void main(String[] args) {
// TODO Auto-generated method stub Map<Character, Integer> map = null;
map = new TreeMap<Character, Integer>();
map.put('a', 0);
map.put('b', 0);
map.put('c', 0);
map.put('d', 0);
map.put('f', 0);
map.put('g', 0);
map.put('s', 0);
map.put('v', 0); // 把字符串中有的字母放在TreeMap集合表里面 String a = "fdgavcbsacdfs";
char[] array = a.toCharArray(); // 把字符串转成字符数组
int num = 0;
Set<Character> keys = map.keySet();
Iterator<Character> iter = keys.iterator();
while (iter.hasNext()) {
Character str = iter.next();
for (int i = 0; i < a.length(); i++) {
if (array[i] == str) {
num = map.get(str) + 1;
map.put(str, num);
}
} }
Set<Character> keys1 = map.keySet();
Iterator<Character> iter1 = keys.iterator();
while (iter1.hasNext()) {
Character str1 = iter1.next();
System.out.print(str1 + "(" + map.get(str1) + ")");
} }
}
map练习小例题的更多相关文章
- Linux 信号量 生产者消费者小例题
菜鸟偶遇信号量,擦出火花(只有不熟才会有火花).于是上网搜资料和看<Unix环境高级编程>实现了几个小例题,高手请勿喷!这几位写得非常好啊: 题目来源: http://www.it165. ...
- hadoop 使用map合并小文件到SequenceFile
上一例是直接用SequenceFile的createWriter来实现,本例采用mapreduce的方式. 1.把小文件整体读入需要自定义InputFormat格式,自定义InputFormat格式需 ...
- mysql连接查询经典小例题
mysql连接查询: Mysql连接查询支持多表连接 对同一张表可以重复连接多次(别名在多次连接同一张表时很重要) 例题1: 下面有2张表 teams表 比赛结果表:result 问题: 得出一张表: ...
- 使用map()的小陷阱:parseInt
假设我们想要把一个字符串数组的每一项转换成整数,我们很自然就想到了把parseInt作为回调函数传给map()函数,但这样做可能会出现意想不到的结果: var strArr = ["1&qu ...
- map用法小例子
一. Map< Key , Value > m_Eg; 一般赋值表示成: TypeElem value; m_Eg[key] = value; 或 m_Eg.insert(make_ ...
- map的嵌套 + 例题(水果)
水果 http://acm.hdu.edu.cn/showproblem.php?pid=1263 Problem Description 夏天来了~~好开心啊,呵呵,好多好多水果~~Joe经营着一个 ...
- Java 13天基础 06天map集合小练习(黑马程序员) 统计字符串中每个字符出现的次数 (经典面试题)
import java.util.HashMap; import java.util.Map; import java.util.Scanner; /** * 目标 : 输出一个字符串中每个字符出现的 ...
- django一对多关系的小例题
urls.py from django.conf.urls import urlfrom django.contrib import adminfrom son1.views import * url ...
- C#ArrayList集合——小例题
用两种方法编写题目:输入姓名,语文分数,数学分数,英语分数到集合,求语文总分,数学平均分,英语最高分以及英语最高分是谁.法一:一个集合的做法 Console.Write("输入总人数:&qu ...
随机推荐
- elementaryos必装软件
所使用版本:elementaryos-0.4-stable-amd64.20160909.iso vmtools jdk sougouinput IntellijIEAD
- html的head中的常见元素
<head></head>中有charset, title,link 操作系统默认的字符编码就是gbk. html的加强 (1)<a href="#" ...
- navicat for mysql 安装
直接上正题,用于记录 1.下载linux版本的navicat:http://www.navicat.com/download/navicat-for-mysql 2.解压 tar -vzxf navi ...
- Linux_异常_02_WinSCP上传文件时显示Permission denied
异常现象如下: 二.解决方案 1.设置对应目录权限全开,就可以上传文件到这个目录了 sudo chmod 777 /devloper
- L85
Surgical Never Events Happen Nevertheless Surgeons call them "never events", because they ...
- 0x01
随便记录点想法什么的, 这个博客的编辑界面挺简陋的...
- 洛谷P3252 [JLOI2012]树
题目描述 在这个问题中,给定一个值S和一棵树.在树的每个节点有一个正整数,问有多少条路径的节点总和达到S.路径中节点的深度必须是升序的.假设节点1是根节点,根的深度是0,它的儿子节点的深度为1.路径不 ...
- 洛谷 U6931 灯光
题目背景 明天就是校园活动了,小明作为场地的负责人,将一切都布置好了.但是在活动的前几天,校园里的灯却都坏掉了,无奈之下,只好再去买一批灯.但是很遗憾的是,厂家看马上要过年了,就没有在进货了,现在只剩 ...
- 数据库和ADO
数据库语言 数据库的简易流程(数据库客户端软件和数据库服务软件的执行流程) 主键的概念 如何创建主键 如何创建外键 主外键关系的概念以及使用 数据库的主要类型 数据库的主要数据类型 使用SQL语句来创 ...
- DataGrid 滚动特定的行或者列
DataGrid 滚动特定的行或者列. DataGrid.ScrollIntoView Method (Object, DataGridColumn) .NET Framework 4.5 Silve ...