zoukankan      html  css  js  c++  java
  • map练习小例题

    "fdgavcbsacdfs" 获取该字符串中,每一个字母出现的次数。 要求打印结果是:a(2)b(1)...; 思路:
     对于结果的分析发现,字母和次数之间存在着映射关系。而且这种关系很多。 很多就需要存储,能存储映射关系的容器有数组和Map集合。
    关系一方式中是有序编号吗?有就使用数组,没有!那就是使用Map集合。 又发现可以保证唯一性的一方具备着顺序如a b c.....
    所以可以使用TreeMap集合。
    这个集合中应该存储的是字母和次数的对应关系。
    1,因为操作的是字符串中的字母,所以先将字符串变成一个字符数组。 2,遍历字符数组,用每一个字母作为键去查Map集合这个表。
    如果该字母键不存在,就将该字母作为键1作为值存储到Map集合中,代表出现一次。
    如果该字母键存在,就将该字母键对应值取出并自增,再将该字母和自增后的值存储到Map集合中, 键相同值会覆盖,这样就记录住了该字母的次数。
    3,遍历结束,Map集合就记录所有字母的出现的次数。

     1 package exmap;
     2 
     3 import java.util.Iterator;
     4 import java.util.Map;
     5 import java.util.Set;
     6 import java.util.TreeMap;
     7 
     8 public class ExMap {
     9 
    10     public static void main(String[] args) {
    11         // TODO Auto-generated method stub
    12 
    13         Map<Character, Integer> map = null;
    14         map = new TreeMap<Character, Integer>();
    15         map.put('a', 0);
    16         map.put('b', 0);
    17         map.put('c', 0);
    18         map.put('d', 0);
    19         map.put('f', 0);
    20         map.put('g', 0);
    21         map.put('s', 0);
    22         map.put('v', 0); // 把字符串中有的字母放在TreeMap集合表里面
    23 
    24         String a = "fdgavcbsacdfs";
    25         char[] array = a.toCharArray(); // 把字符串转成字符数组
    26         int num = 0;
    27         Set<Character> keys = map.keySet();
    28         Iterator<Character> iter = keys.iterator();
    29         while (iter.hasNext()) {
    30             Character str = iter.next();
    31             for (int i = 0; i < a.length(); i++) {
    32                 if (array[i] == str) {
    33                     num = map.get(str) + 1;
    34                     map.put(str, num);
    35                 }
    36             }
    37 
    38         }
    39         Set<Character> keys1 = map.keySet();
    40         Iterator<Character> iter1 = keys.iterator();
    41         while (iter1.hasNext()) {
    42             Character str1 = iter1.next();
    43             System.out.print(str1 + "(" + map.get(str1) + ")");
    44         }
    45 
    46     }
    47 }
  • 相关阅读:
    关于面向对象
    关于内存的划分和传引用传参数的区别
    关于目前我们专业的各种发展方向
    关于C语言底层
    关于游戏行业目前的形势
    关于jsp,javascript,php等语言
    鼠标滑动图片变大
    在Linux环境下mysql的root密码忘记解决方法
    百度网盘
    bootsrtap 主题元素
  • 原文地址:https://www.cnblogs.com/tendo/p/7016025.html
Copyright © 2011-2022 走看看