利用集合map

1、编写JAVA应用程序。从键盘上输入一个字符串,a)分别统计该串中每个字符出现的次数。b)统计"出现次数最多元素,及出现次数 c)统计字母,数字,空格等出现的次数...要求:
1) 利用Treemap类及其entrySet()方法;
2) 利用泛型等来实现。
public void test2() throws Exception {
		Map<Character, Integer> map = new TreeMap<Character,Integer>();
		Scanner sc  = new Scanner(System.in);
		String  str = "";
		int letterCount = 0; //英文字母个数
		int blankCount = 0;  //空格个数
		int numCount = 0;  //数字个数
		int otherCount = 0;  //其他字符个数
		System.out.println("请输入字符串>>>>>>>>>>>");
		str = sc.nextLine();
		char[] chs = str.toCharArray();
	
		/*在遍历循环体中
		 * 先判断map的key中是否存在该字符
		 * 		存在 该key对应的 value值即计数器加一
		 * 		不存在 将其放入容器 计数器初始化为1
		 * */
		for (char ch:chs) {
			if(map.containsKey(ch)){
				int n  = map.get(ch);
				map.put(ch, ++n);
			}else {
				map.put(ch, 1);
			}
		//	System.out.println(map);
			
//			if(chs[i] <= 'z'&&chs[i]>='a'||(chs[i] <= 'A'&&chs[i]>='Z')){
//				letterCount++;
//				
//			}else if(chs[i] <= '9'&&chs[i]>='0'){
//				numCount++;
//			}else if(chs[i] == ' '){
//				blankCount++;
//			}else{
//				otherCount++;
//			}
		}
		char maxc = 0;
		int maxcount = 0;
		
		for(Map.Entry<Character,Integer> entry : map.entrySet()){
			char key = entry.getKey();
			int value = entry.getValue();
			if(value>maxcount){
				maxc = key;
				maxcount = value;
			}
			
			
			System.out.println("统计每个字符的个数\t key:"+key+"------"+"value:"+value);
			if(key<= 'z'&&key>='a'||(key <= 'A'&&key>='Z')){
				letterCount++;
			}else if(key<='9'&&key>='0'){
				numCount++;
			}else if(key ==' '){
				blankCount++;
			}else {
				otherCount++;
			}
		}
		System.out.println("出现次数最多元素:"+maxc+"------出现次数"+maxcount);
		System.out.println("字母个数:"+letterCount);
		System.out.println("数字个数:"+numCount);
		System.out.println("空格个数:"+blankCount);
		System.out.println("其他字符个数:"+otherCount);
	
		
	}


你可能感兴趣的:(java,map,entrySet)