码迷,mamicode.com
首页 > 其他好文 > 详细

如何获取字符串中相同字符出现的次数

时间:2015-03-05 17:06:28      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:iterator   hashmap   遍历   扩展   java   

任务:

1、统计字符数组中相同数据个数。

2、需要用set实现。

3、需要用iterator实现。

第一次出现时,我只是简单的在纸上写了点思路,事后发现除了一些具体属性可能因为不熟悉之外,大体还是成功的:

我将思路化为代码后实现如下:

public static void main(String[] args) {
		String[] arrays=new String[]{"zhangsan","andi","andi","zhangsan","wangwu","pianliu"};
		Arrays.sort(arrays, new SortComparator());
		Set<String> setData=new HashSet<String>();
		for(int i=0;i<arrays.length;i++){
			setData.add(arrays[i]);//具备排重功能
		}
		//计算相同数据出现的次数
		Map<String,Integer> countMap=new HashMap<String,Integer>();
			for(int j=0;j<arrays.length;j++){
				if(countMap.containsKey(arrays[j])){//如果存在那么获取value自增
					int count=countMap.get(arrays[j])+1;
					countMap.put(arrays[j], count);
				}else{
					countMap.put(arrays[j], 1);
				}
		}
		//遍历set
		Iterator<String> it= setData.iterator();//不重复数据
		while(it.hasNext()){
			String data=it.next();
			System.out.print(data+" = "+countMap.get(data));
			System.out.println();
		}
	}
很明显,代码中我添加了一个比较类SortComparator,本来我打算将数据统计完成后,按照字母从小到大的方式输出,虽然是画蛇添脚,但是终归还是比较有意思,上面的代码并没有实现到这点,主要原因是set和map存储数据是无序的,如果非要实现,需要在代码末端进行修改。

class SortComparator implements Comparator<String>{

	public int compare(String o1, String o2) {
		char c1 = ((String) o1).charAt(0);
		char c2 = ((String) o2).charAt(0);
		return c1-c2;
	}
	
}
扩展:该功能可以用于统计文章中的相同字数或者词重复出现多少次。




如何获取字符串中相同字符出现的次数

标签:iterator   hashmap   遍历   扩展   java   

原文地址:http://blog.csdn.net/trsli/article/details/44083015

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!