重要练习:将字符串中的字母按如下格式显示:

a(1)b(2)......

代码及思路如下:

  1. /*
  2. 获取字符串中字母的次数,并打印出如下格式a(1)b(2)c(3)......
  3.  
  4. 思路:
  5. 先定义一个方法,将该功能进行封装.
  6. 1.首先将字符串转换成字符数组 方法是toCharArray();
  7. 2.定义一个map容器用来接收每个字符, 因为结果是有序的可以使用TreeMap
  8. 3.遍历字符数组 for循环.
  9. 将字母作为 键 去map集合中去查询该字母,如果返回null,说明map集合中没有该字母,那么将该字母和1存入到map集合中去,
  10. 如果返回的不是null,说明此时的map集合中已经有了该字母,那么在map集合中该字母对应的次数自增1,然后将该字母和自增后的次数存入到map集合中去.
  11. 存入后会覆盖原先的次数.
  12. 3将map集合中的数据按指定形式打印出来
  13. 指定形式:
  14. 1.定义一个容器.StringBuilder缓冲区可以存放任何数据的形式,通过Map集合的KeySet方法或者entrySet方法获取map集合中的键值或者其映射关系
  15. 通过keySet的get(key)方法获取map集合中的value 或者entrySet的方法getKey()方法和getValue()方法获取对应的键和值.
  16.  
  17. 2.最后将键和值通过 StringBuilder的append方法添加进缓冲区,并打印. 由于StringBuilder和String不是同一个类,因此return sb的时候需要
  18. 写上toString--->return sb.toString();
  19.  
  20. */
  21.  
  22. import java.util.*;
  23.  
  24. class MapCharTest
  25. {
  26. public static void main(String [] args)
  27. {
  28. String s = myCharCount("aabbccddedsf");
  29. sop(s);
  30. }
  31.  
  32. public static String myCharCount(String str)
  33. {
  34. //将字符串转换成字符数组
  35. char [] chs = str.toCharArray();
  36.  
  37. //定义一个map集合
  38. TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();
  39.  
  40. //遍历字符数组
  41. for(int x = ; x<chs.length; x++)
  42. {
  43. //将字母作为 键 去查找对应的 值
  44. Integer value = tm.get(chs[x]);
  45.  
  46. //去除不是字母的其他字符.
  47. if(!(chs[x]>='a'&&chs[x]<='z' || chs[x]>='A'&& chs[x]<='Z'))
  48. continue;
  49.  
  50. //判断 值 是否存在
  51. if(value==null)
  52. tm.put(chs[x],);
  53. else
  54. {
  55. value = value+;
  56. tm.put(chs[x],value);
  57. }
  58. }
  59. // sop(tm);
  60.  
  61. //创建一个缓冲区
  62. StringBuilder sb = new StringBuilder();
  63.  
  64. /*
  65. //第一种Map取出方式 keySet方法
  66. Set<Character> keySet = tm.keySet();
  67.  
  68. 迭代set集合中的键集
  69. Iterator<Character> it = keySet.iterator();
  70.  
  71. while(it.hasNext())
  72. {
  73. Character key = it.next(); //获取键
  74. Integer value = tm.get(key); //通过键获取对应的 值
  75.  
  76. sb.append(key+"("+value+")"); //将键和值添加进缓冲区中
  77.  
  78. }
  79. */
  80.  
  81. //Map集合第二种取出方式:entrySet
  82. Set<Map.Entry<Character,Integer>> entrySet = tm.entrySet();
  83.  
  84. Iterator<Map.Entry<Character,Integer>> it = entrySet.iterator();
  85.  
  86. while(it.hasNext())
  87. {
  88. Map.Entry<Character,Integer> me = it.next();
  89.  
  90. Character key = me.getKey();
  91. Integer value = me.getValue();
  92.  
  93. sb.append(key+"("+value+")");
  94. }
  95.  
  96. return sb.toString(); //将StringBuilder按String形式打印出来.
  97.  
  98. }
  99.  
  100. public static void sop(Object obj)
  101. {
  102. System.out.println(obj);
  103.  
  104. }
  105. }

Map集合重要练习的更多相关文章

  1. Java版本:识别Json字符串并分隔成Map集合

    前言: 最近又看了点Java的知识,于是想着把CYQ.Data V5迁移到Java版本. 过程发现坑很多,理论上看大部分很相似,实践上代码写起来发现大部分都要重新思考方案. 遇到的C#转Java的一些 ...

  2. Java常用的几种集合, Map集合,Set集合,List集合

    Java中  Object是所有类的根 Java集合常用的集合List集合.Set集合.Map集合 Map接口常用的一些方法 size() 获取集合中名值对的数量 put(key k, value v ...

  3. Map集合

    1:Map (1)将键映射到值的对象. 一个映射不能包含重复的键:每个键最多只能映射到一个值. 键值对的方式存在 (2)Map和Collection的区别? A:Map 存储的是键值对形式的元素,键唯 ...

  4. MyBatis的一系列问题的处理(遍历Map集合和智能标签和属性和字段不一样的解决办法 和sql片段)(三)

    一.字段名与属性名(数据库的名字)不一样怎么办? 方案一:在小配置中配置一个resultMapper <!--方案一:resultMapper 字段名与属性名不一致 --> <res ...

  5. Map集合及与Collection的区别、HashMap和HashTable的区别、Collections、

    特点:将键映射到值的对象,一个映射不能包含重复的键,每个键最多只能映射到一个值. Map集合和Collection集合的区别 Map集合:成对出现 (情侣)                       ...

  6. java://Comparator、Comparable的用法(按照要求将map集合的键值对进行顺序输出)

    import java.util.*; public class Person implements Comparable<Person>//使Person的属性具有比较性 { priva ...

  7. Java集合类学习笔记(Map集合)

    Map用于保存具有映射关系的数据,因此Map集合里保存着两组数据,一组用于保存Map的key,一组用于保存key所对应的value. Map的key不允许重复. HashMap和Hashtable都是 ...

  8. java学习第18天(map集合)

    Map集合是将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 存储的是键值对形式的元素,键唯一,值可以重复,有点类似于数据库中的主键加数据.主要功能有: A:添加功能 put ...

  9. Map集合 总结

    (本人第一次写博客,部分内容有参照李刚老师的疯狂java系列图书,如有遗漏错误,请多指教,谢谢.) Java的集合类可分为Set.List.Map.Queue,其中Set.List.Queue都有共同 ...

  10. Map集合的应用及其遍历方式

    ---> HashMap :底层基于哈希表      存储原理也使用哈希表来存放的:            往HashMap添加了元素 ,首先会调用键的hashCode方法 获得一个哈希值,然后 ...

随机推荐

  1. 【贪心】【uva11520】 Fill the Square

    填充正方形(Fill the Square, UVa 11520) 在一个n×n网格中填了一些大写字母,你的任务是把剩下的格子中也填满大写字母,使得任意两个相邻格子(即有公共边的格子)中的字母不同.如 ...

  2. 解决net-snmp正确输出MAC地址和判断空的IP地址

    function readVarbinds (buffer, varbinds) { buffer.readSequence (); while (1) { buffer.readSequence ( ...

  3. sql server保留小数解决方法

    在数据库中,我们有时会用到小数,怎样在数据库中转化小数呢,下面是一些常用的方法. 1.使用Round(字段名/数字,小数保留位数)方法,如下所示: select Round(3.333,2) 结果如下 ...

  4. Repository,UnitOfWork,DbContext(1)

    一.前言 终于到EF了,实在不好意思,最近有点忙,本篇离上一篇发布已经一个多星期了,工作中的小迭代告一段落,终于有点时间来继续我们的架构设计了,在这里先对大家表示歉意. 其实这段时间我并不是把这个系列 ...

  5. JQ 更改li 颜色

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. iOS FMDB

    FMDB FMDB概述 什么是FMDB * FMDB是iOS平台的SQLite数据库框架 * FMDB以OC的方式封装了SQLite的C语言API FMDB的优点 * 使用起来更加面向对象,省去了很多 ...

  7. linux下C++ STL hash_map的使用以及使用char *型变量作为Key值的一大“坑”

    计算机编程中经常会用到hash表,而在C++中,使用STL编程更是少不了的.本文将介绍STL中hash_map的使用.在hash_map中使用自定义类型作为key值的方法以及在使用char *类型作为 ...

  8. Java IO之序列化

    序列化机制是Java语言内建的一种对象持久化方式,可以很容易的在JVM中的活动对象和字节数组之间转换.它的一个重要用途就是远程方法调用的时候,用来对开发人员屏蔽底层实现细节(远端的开发人员不知道这个对 ...

  9. 自己写的轻量级PHP框架trig与laravel5.1,yii2性能对比

    看了下当前最热门的php开发框架,想对比一下自己写的框架与这些框架的性能对比.先看下当前流行框架的投票情况. 看结果对比,每个测试脚本做了一个数据库的联表查询并进行print_r输出,查询的sql语句 ...

  10. 自动化高效css开发,畅谈less的灵活变化

    css是一种让html与样式分离解析而出现的代码,它的出现大大提高了程序员的工作效率,和后期进行维护的效率.但是发展至今,由于起死板单调的写法,越来越不能满足程序员们灵活的思维,很多时候是种恨铁不成钢 ...