在一段英文字母中找出每个字母重复数量的方法(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,如果遇到空格数字,标点符号,及其他特殊字符就排除掉,不插入,如果遇到标点符号也统计则不需要判断条件,全部都插入即可。
代码如下:
输出结果:
{f=4, g=4, d=2, s=6, a=3, n=1, l=1, m=1, j=4, k=4, h=6}
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}
相关文章推荐
- Java编程思想重点笔记(Java开发必看)
- Spring IoC容器
- Java注释Override、Deprecated、SuppressWarnings详解
- Java中回调函数的使用
- Spring注解@Component、@Repository、@Service、@Controller区别
- java sound
- 使用内省完成JavaBean到集合的封装
- JAVA泛型? T K V E等代表的意思
- 精选30道Java笔试题解答
- 安卓文件安全删除问题 --- java.io.IOException: open failed: EBUSY (Device or resource busy) (System.err)
- Java:String和Date、Timestamp之间的转换
- Java base64加密
- SpringMVC源码剖析(五)-消息转换器
- java类的初始化顺序
- spring错误-在spring里面找不到org.springframework.cache.ehcache.EhCacheManagerFactoryBean
- Java的注释说明
- spring学习笔记---Jackson的使用和定制
- 约瑟夫环问题
- SpringMVC源码剖析(三)- DispatcherServlet的初始化流
- mac os下eclipse修改svn的用户名和密码 mac svn checkout 报 403 Forbidden 错误的处理方法