javaseday19(Map获取字母个数 查表法)
来源:互联网 发布:可利电气经营数据 编辑:程序博客网 时间:2024/05/19 23:26
// 用keySet 只能获取key上的 然后通过key获取value
HahMap 和HashSet 是无序的 表明的是存和取不同 即通过了存的元素的hashCode 排序
如果需要有序 就使用HashLinkedMap 有序的意义是 怎么存怎么取
/*
* 联系
* "asdsawfdcx" 获取该字符串中每个字母出现的个数
* 要求打印的结果是a(2) b(1)
* 对于结果的分析发现 字母和次数之间存在着映射的关系 而且这种关系很多
* 很多就需要存储 能存储映射关系的容器有数组和Map集合
* 关系中一方是有序编号么 ?没有
* 那就是使用Map集合 又发现可以保证唯一性的一方具备着顺序 如 a b c ...
* 所以可以使用TreeMap集合
*
* 这个集合最终对应存储的是字母和次数的对应关系
*
* 1、因为操作的是字符串的字母 所以先将字符串变成字符数组
* 2、遍历字符数组 用每一个字母作为键去查Map集合这个表
* 如果该字母键不存在就将该字母作为键1作为值存储到map集合中
* 如果该字母键存在 就将该字母键对应值取出并+1 再将该字母和+1后的值存储到map集合中
* 键相同值会覆盖 这样就记录住了该字母的次数
* 3、遍历结束map集合就记录所有字母的出现的次数
*
*/
public class HashLinkedMap {
public static void main(String[] args) {
String str = "asdsaAwfdcx";
String s = getCharCount(str);
System.out.println(s);
}
public static String getCharCount(String str) {
//将字符串变成字符数组 忘了 但是知道结果 所以char[] cha = str. 看方法
char[] cha = str.toCharArray();
//定义map集合
Map<Character,Integer> map = new TreeMap<Character,Integer>();
for (int i = 0; i < cha.length; i++) {
if(!(cha[i]>='a' && cha[i]<='z' ||cha[i]>='A' && cha[i]<='Z'))
continue;//continue是跳出本次循环继续下次
//将数组中的字母作为键去查表
Integer value = map.get(cha[i]) ;
int count = 1;
//判断值是否为空
if(value!=null){
count = value+1;
}
map.put(cha[i], count);
/*if(value==null){
map.put(cha[i], 1);
}else{
map.put(cha[i], value+1);
}*/
}
return mapToString(map);
}
private static String mapToString(Map<Character, Integer> map) {
StringBuilder sb= new StringBuilder();
Iterator<Character> it = map.keySet().iterator();
while(it.hasNext()){
Character key = it.next();
Integer value = map.get(key);
sb.append(key+"("+value+")");
}
return sb.toString();
}
}
public class MapTest01 {
/*
* Map在有映射关系时 可以优先考虑
*
* 在查表法中的应用较为常见
*/
public static void main(String[] args) {
int week = 1;
System.out.println(getWeek(1));
System.out.println(getWeekByMap(getWeek(1)));
}
public static String getWeekByMap(String week){
Map<String,String> map = new HashMap<String,String>();
map.put("星期一", "Mon");//集合也是对象 能放在value里面
map.put("星期二", "Tus");
map.put("星期三", "Wes");
map.put("星期四", "Th");
map.put("星期五", "Fir");
map.put("星期日", "Sun");
map.put("星期天", "Sun");
return map.get(week);
}
public static String getWeek(int week){
if(week<1||week>7){
throw new RuntimeException("没有对应的星期 ");
}
String[] weeks ={"","星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
return weeks[week];
}
}
- javaseday19(Map获取字母个数 查表法)
- 获取字符串中字母出现的个数
- 利用map集合获取字符串中字母出现的次数
- Java Map集合获取字符串中的字母出现的次数
- 使用 map 关联容器 统计文章中原音字母的个数
- 查找小写字母个数
- 小写字母个数
- 字符串大小写字母个数
- 1051 字母个数统计
- 统计大小写字母个数
- 求字母的个数
- 求字母的个数
- 1251: 统计字母个数
- 求出现字母个数
- Python - 统计字母个数
- 例题:统计字母个数
- 字母个数统计
- 1145: 统计字母个数
- matlab快速入门6——向量化
- powerdesigner中name和comment转换
- js返回上一页并刷新的多种实现方法
- Linux下fdisk命令操作磁盘详解--添加、删除、转换分区等
- 博客收录
- javaseday19(Map获取字母个数 查表法)
- The type javax.servlet.http.HttpServletRequest cannot be resolved
- Mybatis一
- 大型互联网技术架构1-架构概述
- 最短路径之Dijkstra算法和Floyd-Warshall算法
- 移动开发用逐浪-官方公众号集成[字体大师]小程序
- CentOS下Mysql数据库的安装与配置
- BZOJ 3884: 上帝与集合的正确用法(欧拉函数)——有趣的题目
- maven web 项目中启动报错java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener