您的位置:首页 > 编程语言 > Java开发

在一段英文字母中找出每个字母重复数量的方法(Java)

2015-08-31 14:58 567 查看
首先需要了解下java的hashmap数据类型:

hashmap是基于哈希表的Map接口的实现。hashmap有两个元素,一个是key(键名),一个是value(键值),就相当于一个字典了,和Python里的字典是一样的。

在一段英文字母中找出每个字母重复数量的实现原理:

将文字中出现的字母,作为键名(key),出现的次数作为键值(value),hashmap中的键名是不能重复的,那么统计这些字母的数量,就变成了统计这些相同键名的数量。

实现方式可以是从第一个字母开始,把字母存到哈希表中去,第一个就是a:1,然后按顺序存第2个字母f:1,如果出现跟前面有的字母重复的话,前面字母的键值就+1,例如afa,遍历到第3个字母的时候,a的键值就变成了2,即a:2,如果遇到空格数字,标点符号,及其他特殊字符就排除掉,不插入,如果遇到标点符号也统计则不需要判断条件,全部都插入即可。

代码如下:

import java.util.HashMap;

public class hashmap_examp {

public static void main(String[] args){
HashMap<String,Integer> map = new HashMap<String,Integer>();
String str="afashfjgjkhlnmash,^566*整数gshkjshgksdfsgdfhjk";
for (int i=0;i<str.length();i++){
char c=str.charAt(i);
String key=String.valueOf(c);
if(map.containsKey(key)){
Integer value=map.get(key);
map.put(key, value+1);
}
else{
//map.put(key, 1); 统计所有的字符,包括中文
if(c>='A'&&c<='Z'||c>='a'&&c<='z'){//利用ascii码去除字符串的数字,空格,标点符号,特殊字符
map.put(key, 1);
}
}
}
System.out.println(map);
}
}


输出结果:

{f=4, g=4, d=2, s=6, a=3, n=1, l=1, m=1, j=4, k=4, h=6}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: