Map查表法练习

import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class MapDemo7 {

	public static void main(String[] args) {
		//Map查表法练习
		//"asdfjsifudcbsdcnncn"
		//获取字符串中每一个字母出现的次数,要求结果格式:a(2)b(1)c(3)....
		
		String str = "asdfjsifudcbsdcnncn";
		
		String char_count = getCharCount(str);
		
		System.out.println(char_count);
		
	}

	private static String getCharCount(String str) {
		
		char[] chs = str.toCharArray();
		
		Map map = new TreeMap();
		
		for (int i = 0; i < chs.length; i++) {
			if(!(chs[i]>='a'&&chs[i]<='z'||chs[i]>='A'&&chs[i]<='Z'))
				continue;
				
			
			
			Integer value = map.get(chs[i]);
			int count = 0;
			if(value!=null){
				count=value;
			}
			count++;
			map.put(chs[i], count);
			
			/*if(value==null){
				map.put(chs[i], 1);
			}else{
				value++;
				map.put(chs[i], value);
			}*/
		}
		
				
		return toString(map);
	}
	/*
	 * 将map集合中的元素转成指定格式的字符串a(2)b(1)c(3)....
	 */
	private static String toString(Map map) {
		
		//数据多,无论类型是什么,最终都要变成字符串,所以可以使用StringBuilder
		StringBuilder sb = new StringBuilder();
		
		//遍历集合
		Set set = map.keySet();
		
		for (Iterator it = set.iterator(); it.hasNext();) {
			Character key = it.next();
			Integer value = map.get(key);
			
			//将键值存储到sb中
			sb.append(key+"("+value+")");
			
		}
		
		
		
		
		return sb.toString();
	}

}

关注我的微信公众号(曲健磊的个人随笔),观看更多精彩内容:

Map查表法练习_第1张图片

你可能感兴趣的:(【深入JDK源码系列】)