Map集合统计字母次数
Map集合练习:
"asfefxAAcf34vrfdfse2-2asd--wdd"获取该字符串中,每一个字母出现的次数
要求打印的结果是:a(2)c(1)...;
思路:
对结果分析发现,结果中字母和出现次数之间构成映射关系,而且很多,
很多就需要存储。能存储映射关系的有数组和Map集合。
关系中有一方顺序固定么?没有,所以选有Map集合。
又发现可以作为唯一标识的一方有自然顺序,即字母表的顺序;
所以选有TreeMap存储。
集合中最终存储的是以字母为键,以字母出现次数为值的映射关系。
1.因为操作的是字符,所以先把字符串转化成字符数组。
2.遍历字符数组,分别以字母为键去Map集合中判断,集合中是否包含该元素,
如果不包含,则以该字母为键,以1为值,存入Map集合中;
如果包含,则取出该字母对应的值,加一,再把该字母和新的值存入集合,这样新的值就会覆盖旧的值。
3.遍历完毕,每个字母对应的值便是其在该字符串中出现的次数,
在对集合进行打印输出即可。
public class MapTest {
public static void main(String[] args) {
String str="asfefxAAcf34vrfdfse2-2asd--wdd";
String s=countChar(str);
System.out.println(s);
}
//定义实现统计字母出现次数的静态方法
public static String countChar(String str) {
char[] chs=str.toCharArray();
Map<Character,Integer> tm=new TreeMap<Character,Integer>();
for (int i = 0; i < chs.length; i++) {
//只统计字母出现次数,不统计其他字符
if(!(chs[i]>='a' && chs[i]<='z'|| chs[i]>='A' && chs[i]<='Z'))
continue;
int count=1;
Integer value=tm.get(chs[i]);
if(value!=null)
count+=value;
tm.put(chs[i], count);
}
return printMap(tm);
}
//定义按规格打印集合的方法
private static String printMap(Map<Character, Integer> tm) {
StringBuilder sb=new StringBuilder();
Iterator<Character> it=tm.keySet().iterator();
while(it.hasNext())
{
Character key=it.next();
Integer value=tm.get(key);
sb.append(key+"("+value+") ");
}
return sb.toString();
}
}
Map集合统计字母次数的更多相关文章
- Map 集合按字母排序方法
@Testpublic void testMapSort() { Map<String, String> map = new HashMap<>(); map.put(&quo ...
- 集合框架-Map练习-记录字母出现的次数
/* * 练习: * 字符串"abcb453 sddbs343bsjvAJBBDVBs21768723",获取该字符串中,每一个字母出现的次数. * 要求打印结果是:a(2)b ...
- 获取一个字符串中每一个字母出现的次数使用map集合
package 获取字符串中单字符出现次数; import java.util.Scanner; import java.util.TreeMap; /* * 需求:获取一个字符串中每一个字母出现的次 ...
- Map集合练习之对字符串中字母出现的次数求和
不多说,直接上干货! 代码需求 如有这么一个字符串 String str = "fdg+avAdc bs5dDa9c-dfs"; MapTest.java package zhou ...
- 集合框架-Map集合练习-记录字母次数思路及代码
1 package cn.itcast.p10.map.test; 2 3 import java.util.Iterator; 4 import java.util.Map; 5 import ja ...
- Java 13天基础 06天map集合小练习(黑马程序员) 统计字符串中每个字符出现的次数 (经典面试题)
import java.util.HashMap; import java.util.Map; import java.util.Scanner; /** * 目标 : 输出一个字符串中每个字符出现的 ...
- 使用folderLeft函数统计字母出现的次数
实例:统计字符串中字母出现的次数 import scala.collection.mutable object Demo_018{ def main(args: Array[String]): Uni ...
- map集合修改其中元素 去除Map集合中所有具有相同值的元素 Properties长久保存的流操作 两种用map记录单词或字母个数的方法
package com.swift.lianxi; import java.util.HashMap; import java.util.Iterator; import java.util.Map; ...
- 计算一个字符串的每个字符出现的次数案例——Map集合
其中,字符的包装类是Character;字符串包装类是String: 遍历字符串转换的数组,每个元素都是一个字符,看创建的这个集合有木有,一开始肯定是没有的其实,字符作为key,所以判断的是这个创建的 ...
随机推荐
- leetcode 数据库题解
184. Department Highest Salary 题意: The Employee table holds all employees. Every employee has an Id, ...
- java一些基本的方法
一,Java中,next();和nextLine();有什么区别 举个例子,你就会明白了.如,你输入的一行:abc cde efg注意,其中abc和cde之间有空格,cde和efg之间也有空格这样,n ...
- C语言头文件#include<stdlib.h>的作用
stdlib 头文件即standard library标准库头文件 stdlib 头文件里包含了C.C++语言的最常用的系统函数 该文件包含了的C语言标准库函数的定义 stdlib.h里面定义了五 ...
- springcloud6---Eureka的配置:
Eureka的配置: 自我保护:表示eureka进入了自我保护模式,eureka启动的时候会从高可用其他节点获取注册表信息,eureka client会每30秒发送心跳,如果eureka server ...
- 2017-2018-1 JaWorld 团队作业--冲刺7
2017-2018-1 JaWorld 团队作业--冲刺7 冲刺博客 冲刺1 冲刺2 冲刺3 冲刺4 冲刺5 项目完成情况 存在的问题 存在的问题是敌机只设置了一种,没能实现多种敌机的游戏设置. 界面 ...
- Windows Shell编程之如何编写为文件对象弹出信息框的Shell扩展
有关COM编程资料 转载:http://www.cnblogs.com/lzjsky/archive/2010/11/22/1884702.html 活动桌面引入一项新特性, 当你在某些特定对象上旋停 ...
- HDU 2896 病毒侵袭(AC自动机)题解
题意:给你n个模式串,再给你m个主串,问你每个主串中有多少模式串,并输出是哪些.注意一下,这里给的字符范围是可见字符0~127,所以要开130左右. 思路:用字典树开的时候储存编号,匹配完成后set记 ...
- linux开启nscd服务缓存加速
在我使用的阿里云主机上有观察到开启了一个服务nscd ,后来谷哥了下该服务的作用.了解到nscd会缓存三种服务passwd group hosts,所以它会记录三个库,分别对应源/etc/passwd ...
- Python学习札记(二十三) 函数式编程4 sorted
参考:sorted NOTE 1.sorted,快速排序,时间复杂度O(nlogn)渐进最优. #!/usr/bin/env python3 L = [] for i in range(10): L. ...
- java学习之浅谈多线程4--SwingWorker
GUI事件处理和绘图代码在一个被称为事件分发线程的特殊线程中执行.如果一个事件需要很长的时间处理,线程就不能顾及到队列中的其他任务.为了解决这个问题,可以运行费时的任务来处理单独线程中的事件.Swin ...