Java 利用Map集合计算一个字符串中每个字符出现的次数
步骤分析
1、给出一串字符串,字符串中可以包含字母、数字、符号等等。
2、创建一个Map集合,key是字符串中的字符,value是字符的个数。
3、遍历字符串,获取每一个字符。
5、使用获取到的字符,去集合Map判断key(字符)是否存在。
6、假如key(字符)存在,那么该key对应的value数值增加1,即该字符的数量加一。
7、假如key(字符)不存在,value的值设为1,并将key-value添加到Map集合中。
8、遍历Map集合,输出每个字符个数的结果。
代码实现
创建一个CharNumber类,在类中定义keyValue方法,计算字符串中每个字符的个数
public class CharNumber {
/**
* 计算字符串中每个字符的个数
* @param string 要被计算字符个数的字符串
* @return <字符-个数> 的Map集合
*/
public static HashMap<Character, Integer> keyValue(String string) {
// 字符串转换为字符数组
char[] chars = string.toCharArray(); // 创建一个Map集合用来存放记录
HashMap<Character, Integer> hashMap = new HashMap<>(); // 遍历字符串,获取每一个字符
for (char c : chars) {
// 使用获取到的字符,去Map集合判断key是否存在
// 利用Map集合的containsKey()方法,判断key是否存在
// 如果存在 value ++,如果不存在 value = value
if (hashMap.containsKey(c)) {
// key存在,获取key对应的value,数值增加一,然后再更新到集合中
Integer value = hashMap.get(c);
value ++;
hashMap.put(c, value);
} else {
// key不存在,将key添加到Map集合中,且其对应的value为1
hashMap.put(c, 1);
}
}
return hashMap;
}
}
创建一个CharNumber类,在类中定义iteratorMap方法,遍历输出计算结果
public class CharNumber {
/**
* 遍历输出Map集合
* @param hashMap <字符-个数> 的Map集合
*/
public static void iteratorMap(HashMap<Character, Integer> hashMap) {
// 调用Map集合的entrySet()方法,获取集合Map的Key-Value,赋值给Set集合
Set<Map.Entry<Character, Integer>> set = hashMap.entrySet();
// 创建Set集合的迭代器
Iterator<Map.Entry<Character, Integer>> kvIterator = set.iterator();
// 迭代输出Set集合
// hasNext():是否存在下一个元素
// next():获取下一个元素
while (kvIterator.hasNext()) {
Map.Entry<Character, Integer> kv = kvIterator.next();
System.out.println("字符'" + kv.getKey() + "'的个数是:" + kv.getValue());
}
}
}
测试一下CharNumber类,随便输入一串字符串,计算每个字符的个数
public class DemoCharNumber {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String string = scn.next();
CharNumber.iteratorMap(CharNumber.keyValue(string));
}
}
运行代码(注意,不能输入空格):
请输入一个字符串:dafsdaganjsda!!!!!!
字符'a'的个数是:4
字符'!'的个数是:6
字符's'的个数是:2
字符'd'的个数是:3
字符'f'的个数是:1
字符'g'的个数是:1
字符'j'的个数是:1
字符'n'的个数是:1
代码总和
CharNumber类
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set; public class CharNumber { public static HashMap<Character, Integer> keyValue(String string) {
char[] chars = string.toCharArray();
HashMap<Character, Integer> hashMap = new HashMap<>();
for (char c : chars) {
if (hashMap.containsKey(c)) {
Integer value = hashMap.get(c);
value ++;
hashMap.put(c, value);
} else {
hashMap.put(c, 1);
}
}
return hashMap;
} public static void iteratorMap(HashMap<Character, Integer> hashMap) {
Set<Map.Entry<Character, Integer>> set = hashMap.entrySet();
Iterator<Map.Entry<Character, Integer>> kvIterator = set.iterator();
while (kvIterator.hasNext()) {
Map.Entry<Character, Integer> kv = kvIterator.next();
System.out.println("字符'" + kv.getKey() + "'的个数是:" + kv.getValue());
}
}
}
DemoCharNumber类
// 测试 import java.util.Scanner; public class DemoCharNumber {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String string = scn.next();
CharNumber.iteratorMap(CharNumber.keyValue(string));
}
}
Java 利用Map集合计算一个字符串中每个字符出现的次数的更多相关文章
- 利用HashMap计算一个字符串中每个字符出现的次数
问题描述:计算一个字符串中每个字符出现的次数 问题分析:每个字符串对应着它的次数,且字符串唯一不重复,这让我们想到了HashMap中的键值对. 1.使用Scanner获取字符串 2.遍历字符串,获取每 ...
- JAVA经典题--计算一个字符串中每个字符出现的次数
需求: 计算一个字符串中每个字符出现的次数 思路: 通过toCharArray()拿到一个字符数组--> 遍历数组,将数组元素作为key,数值1作为value存入map容器--> 如果k ...
- 用es6的Array.reduce()方法计算一个字符串中每个字符出现的次数
有一道经典的字符串处理的问题,统计一个字符串中每个字符出现的次数. 用es6的Array.reduce()函数配合“...”扩展符号可以更方便的处理该问题. s='abananbaacnncn' [. ...
- Java基础知识强化之集合框架笔记61:Map集合之统计字符串中每个字符出现的次数的案例
1. 首先我们看看统计字符串中每个字符出现的次数的案例图解: 2. 代码实现: (1)需求 :"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5) ...
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_08 Map集合_10_练习_计算一个字符串中每个字符出现的次数
- Hashtable集合 --练习题_计算一个字符串中每个字符出现次数
Hashtable集合 java.util.Hashtable<K,V>集合 implements Map<K,V>接口 Hashtable:底层也是一个哈希表,是一个线程安 ...
- Java统计一个字符串中各个字符出现的次数
相信很多人在工作的时候都会遇到这样一个,如何统计一个字符串中各个字符出现的次数呢,这种需求一把用在数据分析方面,比如根据特定的条件去查找某个字符出现的次数.那么如何实现呢,其实也很简单,下面我贴上代码 ...
- 计算一个字符串的每个字符出现的次数案例——Map集合
其中,字符的包装类是Character;字符串包装类是String: 遍历字符串转换的数组,每个元素都是一个字符,看创建的这个集合有木有,一开始肯定是没有的其实,字符作为key,所以判断的是这个创建的 ...
- Java 13天基础 06天map集合小练习(黑马程序员) 统计字符串中每个字符出现的次数 (经典面试题)
import java.util.HashMap; import java.util.Map; import java.util.Scanner; /** * 目标 : 输出一个字符串中每个字符出现的 ...
随机推荐
- Python--day48--面向对象回顾
面向对象回顾: 例1: 例2: 特殊方法(要背会):
- H3C PPP会话流程
- 脑残的设计--- 视图(view)里面包含order by
2015/05/26 更新 今天又遇到了类似问题...尼玛无语了 编码规范啊 !!! 今天有个兄弟跟我说sql跑得太慢了,让我看看.sql如下: SELECT rownum row_num, pv.v ...
- Can you find it?——[二分查找]
Description Give you three sequences of numbers A, B, C, then we give you a number X. Now you need t ...
- 原生PHP实现Mysql数据分页功能
一. 思路整理 实现一个数据分页功能,需要有数据的总条数,每页展示的条数,和当前在第几页这三个参数 通过⌈总条数/每页展示的条数⌉可以得到总页数,比如某留言板有101条留言,每页展示10条,一那就需要 ...
- 聚类——DBSCAN
转载自: https://www.cnblogs.com/pinard/p/6208966.html http://www.cnblogs.com/pinard/p/6217852.html http ...
- C# 高级面试题
很少会有人可以答对,如果你遇到一个来面试的人实在嚣张,就可以用本文的题去打击 本文内容就看着玩,请不要在严肃的面试中问题这样的题目 如果面试到一个人可以回答出下面的题目也不能证明他的技术很强,只能说明 ...
- 闲来无事写一个jquery计算器,没有进行封装......
<!doctype html> <html> <head> <meta charset="utf-8" /> <title&g ...
- Linux 内核同步 urb
不幸的是, 同步 urb 没有一个象中断, 控制, 和块 urb 的初始化函数. 因此它们必须在 驱动中"手动"初始化, 在它们可被提交给 USB 核心之前. 下面是一个如何正确初 ...
- [板子]用线段树解决ST表问题
ST表可以参考:http://blog.csdn.net/whistlena/article/details/52191463 简单说就是区间RMQ最值问题. 对解决这种问题,线段树不用用啥啊. 扔一 ...