Map集合重要练习
重要练习:将字符串中的字母按如下格式显示:
a(1)b(2)......
代码及思路如下:
- /*
- 获取字符串中字母的次数,并打印出如下格式a(1)b(2)c(3)......
- 思路:
- 先定义一个方法,将该功能进行封装.
- 1.首先将字符串转换成字符数组 方法是toCharArray();
- 2.定义一个map容器用来接收每个字符, 因为结果是有序的可以使用TreeMap
- 3.遍历字符数组 for循环.
- 将字母作为 键 去map集合中去查询该字母,如果返回null,说明map集合中没有该字母,那么将该字母和1存入到map集合中去,
- 如果返回的不是null,说明此时的map集合中已经有了该字母,那么在map集合中该字母对应的次数自增1,然后将该字母和自增后的次数存入到map集合中去.
- 存入后会覆盖原先的次数.
- 3将map集合中的数据按指定形式打印出来
- 指定形式:
- 1.定义一个容器.StringBuilder缓冲区可以存放任何数据的形式,通过Map集合的KeySet方法或者entrySet方法获取map集合中的键值或者其映射关系
- 通过keySet的get(key)方法获取map集合中的value 或者entrySet的方法getKey()方法和getValue()方法获取对应的键和值.
- 2.最后将键和值通过 StringBuilder的append方法添加进缓冲区,并打印. 由于StringBuilder和String不是同一个类,因此return sb的时候需要
- 写上toString--->return sb.toString();
- */
- import java.util.*;
- class MapCharTest
- {
- public static void main(String [] args)
- {
- String s = myCharCount("aabbccddedsf");
- sop(s);
- }
- public static String myCharCount(String str)
- {
- //将字符串转换成字符数组
- char [] chs = str.toCharArray();
- //定义一个map集合
- TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();
- //遍历字符数组
- for(int x = ; x<chs.length; x++)
- {
- //将字母作为 键 去查找对应的 值
- Integer value = tm.get(chs[x]);
- //去除不是字母的其他字符.
- if(!(chs[x]>='a'&&chs[x]<='z' || chs[x]>='A'&& chs[x]<='Z'))
- continue;
- //判断 值 是否存在
- if(value==null)
- tm.put(chs[x],);
- else
- {
- value = value+;
- tm.put(chs[x],value);
- }
- }
- // sop(tm);
- //创建一个缓冲区
- StringBuilder sb = new StringBuilder();
- /*
- //第一种Map取出方式 keySet方法
- Set<Character> keySet = tm.keySet();
- 迭代set集合中的键集
- Iterator<Character> it = keySet.iterator();
- while(it.hasNext())
- {
- Character key = it.next(); //获取键
- Integer value = tm.get(key); //通过键获取对应的 值
- sb.append(key+"("+value+")"); //将键和值添加进缓冲区中
- }
- */
- //Map集合第二种取出方式:entrySet
- Set<Map.Entry<Character,Integer>> entrySet = tm.entrySet();
- Iterator<Map.Entry<Character,Integer>> it = entrySet.iterator();
- while(it.hasNext())
- {
- Map.Entry<Character,Integer> me = it.next();
- Character key = me.getKey();
- Integer value = me.getValue();
- sb.append(key+"("+value+")");
- }
- return sb.toString(); //将StringBuilder按String形式打印出来.
- }
- public static void sop(Object obj)
- {
- System.out.println(obj);
- }
- }
Map集合重要练习的更多相关文章
- Java版本:识别Json字符串并分隔成Map集合
前言: 最近又看了点Java的知识,于是想着把CYQ.Data V5迁移到Java版本. 过程发现坑很多,理论上看大部分很相似,实践上代码写起来发现大部分都要重新思考方案. 遇到的C#转Java的一些 ...
- Java常用的几种集合, Map集合,Set集合,List集合
Java中 Object是所有类的根 Java集合常用的集合List集合.Set集合.Map集合 Map接口常用的一些方法 size() 获取集合中名值对的数量 put(key k, value v ...
- Map集合
1:Map (1)将键映射到值的对象. 一个映射不能包含重复的键:每个键最多只能映射到一个值. 键值对的方式存在 (2)Map和Collection的区别? A:Map 存储的是键值对形式的元素,键唯 ...
- MyBatis的一系列问题的处理(遍历Map集合和智能标签和属性和字段不一样的解决办法 和sql片段)(三)
一.字段名与属性名(数据库的名字)不一样怎么办? 方案一:在小配置中配置一个resultMapper <!--方案一:resultMapper 字段名与属性名不一致 --> <res ...
- Map集合及与Collection的区别、HashMap和HashTable的区别、Collections、
特点:将键映射到值的对象,一个映射不能包含重复的键,每个键最多只能映射到一个值. Map集合和Collection集合的区别 Map集合:成对出现 (情侣) ...
- java://Comparator、Comparable的用法(按照要求将map集合的键值对进行顺序输出)
import java.util.*; public class Person implements Comparable<Person>//使Person的属性具有比较性 { priva ...
- Java集合类学习笔记(Map集合)
Map用于保存具有映射关系的数据,因此Map集合里保存着两组数据,一组用于保存Map的key,一组用于保存key所对应的value. Map的key不允许重复. HashMap和Hashtable都是 ...
- java学习第18天(map集合)
Map集合是将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 存储的是键值对形式的元素,键唯一,值可以重复,有点类似于数据库中的主键加数据.主要功能有: A:添加功能 put ...
- Map集合 总结
(本人第一次写博客,部分内容有参照李刚老师的疯狂java系列图书,如有遗漏错误,请多指教,谢谢.) Java的集合类可分为Set.List.Map.Queue,其中Set.List.Queue都有共同 ...
- Map集合的应用及其遍历方式
---> HashMap :底层基于哈希表 存储原理也使用哈希表来存放的: 往HashMap添加了元素 ,首先会调用键的hashCode方法 获得一个哈希值,然后 ...
随机推荐
- 【贪心】【uva11520】 Fill the Square
填充正方形(Fill the Square, UVa 11520) 在一个n×n网格中填了一些大写字母,你的任务是把剩下的格子中也填满大写字母,使得任意两个相邻格子(即有公共边的格子)中的字母不同.如 ...
- 解决net-snmp正确输出MAC地址和判断空的IP地址
function readVarbinds (buffer, varbinds) { buffer.readSequence (); while (1) { buffer.readSequence ( ...
- sql server保留小数解决方法
在数据库中,我们有时会用到小数,怎样在数据库中转化小数呢,下面是一些常用的方法. 1.使用Round(字段名/数字,小数保留位数)方法,如下所示: select Round(3.333,2) 结果如下 ...
- Repository,UnitOfWork,DbContext(1)
一.前言 终于到EF了,实在不好意思,最近有点忙,本篇离上一篇发布已经一个多星期了,工作中的小迭代告一段落,终于有点时间来继续我们的架构设计了,在这里先对大家表示歉意. 其实这段时间我并不是把这个系列 ...
- JQ 更改li 颜色
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- iOS FMDB
FMDB FMDB概述 什么是FMDB * FMDB是iOS平台的SQLite数据库框架 * FMDB以OC的方式封装了SQLite的C语言API FMDB的优点 * 使用起来更加面向对象,省去了很多 ...
- linux下C++ STL hash_map的使用以及使用char *型变量作为Key值的一大“坑”
计算机编程中经常会用到hash表,而在C++中,使用STL编程更是少不了的.本文将介绍STL中hash_map的使用.在hash_map中使用自定义类型作为key值的方法以及在使用char *类型作为 ...
- Java IO之序列化
序列化机制是Java语言内建的一种对象持久化方式,可以很容易的在JVM中的活动对象和字节数组之间转换.它的一个重要用途就是远程方法调用的时候,用来对开发人员屏蔽底层实现细节(远端的开发人员不知道这个对 ...
- 自己写的轻量级PHP框架trig与laravel5.1,yii2性能对比
看了下当前最热门的php开发框架,想对比一下自己写的框架与这些框架的性能对比.先看下当前流行框架的投票情况. 看结果对比,每个测试脚本做了一个数据库的联表查询并进行print_r输出,查询的sql语句 ...
- 自动化高效css开发,畅谈less的灵活变化
css是一种让html与样式分离解析而出现的代码,它的出现大大提高了程序员的工作效率,和后期进行维护的效率.但是发展至今,由于起死板单调的写法,越来越不能满足程序员们灵活的思维,很多时候是种恨铁不成钢 ...