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方法 获得一个哈希值,然后 ...
随机推荐
- HMM的学习笔记1:前向算法
HMM的学习笔记 HMM是关于时序的概率模型.描写叙述由一个隐藏的马尔科夫链随机生成不可观測的状态随机序列,再由各个状态生成不可观測的状态随机序列,再由各个状态生成一个观測而产生观測的随机过程. HM ...
- [jQuery] 自做 jQuery Plugin - Part 1
有時候寫 jQuery 時,常會發現一些簡單的效果可以重複利用.只是每次用 Copy & Paste 大法似乎不是件好事,有沒有什麼方法可以讓我們把這些效果用到其他地方呢? 沒錯,就是用 jQ ...
- httpwatch 9.3怎么在ie 8上看不到
首先,确认HttpWatch Basic加载项是否启动:打开IE,单击工具图标并选择管理加载项.确认HttpWatch Basic的状态是已启用,点击关闭.之后打开某个网页,在页面空白处右击选择Htt ...
- Android Studio Errors
1.The import org.apache.http.client; tip: cannot be resolved; resolve: add this line in build.gradle ...
- Letter of inquiry about employment possibilities, e-mail version
Subject: (logical to recipient!) Inquiry about software engineering position after completion of M.S ...
- Android常用组件Broadcast介绍
一.Broadcast简介 Broadcast是Android的四大组件之一.可分为: 1.普通广播 发送一个广播,所有监听该广播的广播接收者都可以监听到改广播. 2.异步广播 当处理完之后的Inte ...
- 232. Implement Queue using Stacks,225. Implement Stack using Queues
232. Implement Queue using Stacks Total Accepted: 27024 Total Submissions: 79793 Difficulty: Easy Im ...
- C++在数组元素个数未知情况下声明数组
我们都从书上学习的方法,定义一个数组需要数组名.类型以及数组元素个数,一般定义必须明确元素的个数,否则无法通过编译. 1. int a[]; 2. int n; int a[n]; 就想上面这两种情况 ...
- Android 贝塞尔曲线
博客图片备份位置:
- CentOS6.4 LAMP环境搭建
网上的教程,不能按着抄打进去,这样会打乱你环境放置位置, 会导致配置路径会出问题. 要有一个环境目录优化, 把环境文件都装在/usr/local里面 首先,把安装文件rar都放置在/usr/local ...