"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练习小例题的更多相关文章

  1. Linux 信号量 生产者消费者小例题

    菜鸟偶遇信号量,擦出火花(只有不熟才会有火花).于是上网搜资料和看<Unix环境高级编程>实现了几个小例题,高手请勿喷!这几位写得非常好啊: 题目来源: http://www.it165. ...

  2. hadoop 使用map合并小文件到SequenceFile

    上一例是直接用SequenceFile的createWriter来实现,本例采用mapreduce的方式. 1.把小文件整体读入需要自定义InputFormat格式,自定义InputFormat格式需 ...

  3. mysql连接查询经典小例题

    mysql连接查询: Mysql连接查询支持多表连接 对同一张表可以重复连接多次(别名在多次连接同一张表时很重要) 例题1: 下面有2张表 teams表 比赛结果表:result 问题: 得出一张表: ...

  4. 使用map()的小陷阱:parseInt

    假设我们想要把一个字符串数组的每一项转换成整数,我们很自然就想到了把parseInt作为回调函数传给map()函数,但这样做可能会出现意想不到的结果: var strArr = ["1&qu ...

  5. map用法小例子

    一. Map< Key , Value > m_Eg; 一般赋值表示成: TypeElem  value; m_Eg[key]  =  value; 或 m_Eg.insert(make_ ...

  6. map的嵌套 + 例题(水果)

    水果 http://acm.hdu.edu.cn/showproblem.php?pid=1263 Problem Description 夏天来了~~好开心啊,呵呵,好多好多水果~~Joe经营着一个 ...

  7. Java 13天基础 06天map集合小练习(黑马程序员) 统计字符串中每个字符出现的次数 (经典面试题)

    import java.util.HashMap; import java.util.Map; import java.util.Scanner; /** * 目标 : 输出一个字符串中每个字符出现的 ...

  8. django一对多关系的小例题

    urls.py from django.conf.urls import urlfrom django.contrib import adminfrom son1.views import * url ...

  9. C#ArrayList集合——小例题

    用两种方法编写题目:输入姓名,语文分数,数学分数,英语分数到集合,求语文总分,数学平均分,英语最高分以及英语最高分是谁.法一:一个集合的做法 Console.Write("输入总人数:&qu ...

随机推荐

  1. mini2440 u-boot下设置tftp

    在烧写好u-boot后,重新启动mini2440,一直按空格键进入u-boot界面: U-Boot 月 - ::) modified by tekkamanninja (tekkamanninja@. ...

  2. java入门的语法学习

    用java语言写了一个求两个数最大公约数的程序: import java.io.*; import java.util.*; import java.math.*; public class Main ...

  3. smokeping 出现的问题

    Global symbol "%Config" requires explicit package name at /usr/lib64/perl5/lib.pm line 10. ...

  4. js中的window.open返回object的错误

    系统中用javascript中的window.open后,页面返回了一个[object].因为系统的原因,必需使用href="javascript:window.open()"这样 ...

  5. PHP的深copy和浅copy

    1.对象复制的由来 为什么对象会有“复制”这个概念,这与PHP5中对象的传值方式是密切相关的,让我们看看下面这段简单的代码 /** * 电视机类 */ class Television { /** * ...

  6. kvm初体验之七:attach usb storage device to a VM

    1. virsh attach-disk vm1 /dev/sdb sdc 将host上的/dev/sdb挂载到vm1的/dev/sdc上 2. virsh detach-disk vm1 sdc 将 ...

  7. [原创]Java集成PageOffice在线打开编辑word文件 - Spring Boot

    开发环境:JDK1.8.Eclipse.Sping Boot + Thymeleaf框架. 一. 构建Sping Boot + Thymeleaf框架的项目(不再详述): 1. 新建一个maven p ...

  8. BZOJ3991:寻宝游戏 (LCA+dfs序+树链求并+set)

    小B最近正在玩一个寻宝游戏,这个游戏的地图中有N个村庄和N-1条道路,并且任何两个村庄之间有且仅有一条路径可达.游戏开始时,玩家可以任意选择一个村庄,瞬间转移到这个村庄,然后可以任意在地图的道路上行走 ...

  9. 1026 Table Tennis (30)(30 分)

    A table tennis club has N tables available to the public. The tables are numbered from 1 to N. For a ...

  10. Oracle查询24小时制的时间格式

    select to_date('2016-11-11 13:42:27', 'yyyy/mm/dd hh24:mi:ss') from dual.