首页 技术 正文
技术 2022年11月9日
0 收藏 501 点赞 4,731 浏览 2746 个字

步骤分析

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));
}
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,118
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,590
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,435
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,206
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,842
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,927