TreeMap类的entrySet()方法的应用

编写JAVA应用程序。
 * 从键盘上输入一个字符串,分别统计该串中每个字符出现的次数。
 * 要求:
 * 1) 利用TreeMap类及其entrySet()方法;

 * 2) 利用泛型等来实现。

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

/*
 *  编写JAVA应用程序。
 * 	从键盘上输入一个字符串,分别统计该串中每个字符出现的次数。
 * 	要求:
 * 		1) 利用TreeMap类及其entrySet()方法;
 * 		2) 利用泛型等来实现。
 * 
 * 		分析: 假设输入的串为 “ABCDSDGWERA!!”
 * 			
 * 		每个字符和其出现的次数成为Map的一个元素(键值对)。
 */
public class MapStringTest {
	public static void main(String[] args) {
		/*
		 * 第一种方法:根据串的特性可知:
		 * length()串的长度
		 * charAt(n)第n个位置上的字符.
		 * 串中每一个字符均有一个索引号
		 */
		String str1 = input();
		Map<Character, Integer> m1 = new TreeMap<Character, Integer>();
		int n=0;  //计数器
		for(int i = 0; i < str1.length(); i++){
			char ch = str1.charAt(i);   //获取串中的字符
			if(!m1.containsKey(ch)){
				for(int j=0;j<str1.length();j++){  //统计ch字符在串中出现的次数
					if(ch==str1.charAt(j)){
						n++;
					}
				}
				m1.put(ch, n);
				n=0;
			}
		}
		System.out.println(m1);
		
		//遍历
		Set<Character> keys = m1.keySet();  //获取容器的key集合
		Iterator<Character> it = keys.iterator();  //反馈一个迭代器
		while(it.hasNext()){
			char key = it.next();
			int value = m1.get(key);        //获得key的值
			System.out.println("\'" + key + "\'出现了" + value + "次");
		}
		
		/*
		 * 第二种方法:利用TreeMap类及其entrySet()方法;
		 */
		String str2 = input();
		char[] c = str2.toCharArray(); // 将字符串转换为字符数组
		Map<Character, Integer> m2 = new TreeMap<Character, Integer>();
		
		//将字符和字符出现的次数放入容器中
		for (int i = 0; i < c.length; i++) {

			if (m2.containsKey(c[i])) {  //判断容器中是否有这个字符
				int value = m2.get(c[i]);  //容器中有此字符,获取字符对应的次数并加一,重新放回容器
				m2.put(c[i], value + 1);
			} else {
				m2.put(c[i], 1);     //容器中没有这个字符,是第一次出现
			}
		}
		System.out.println("m1>>>" + m2);
		
		//使用entrySet()方法实现元素的遍历
		Set<Entry<Character,Integer>> elems = m2.entrySet(); //将m1中所有元素收集起来组成一个集合
		
		Iterator<Entry<Character,Integer>> elemsIt = elems.iterator();
		
		while( elemsIt.hasNext() ){
			Entry<Character,Integer> elem = elemsIt.next(); //获取集合中的元素
			char key = elem.getKey();
			int value = elem.getValue();
			System.out.println("\'" + key + "\'出现了" + value + "次");
		}
		
	}

	// 构造一个接收输入字符串的方法
	public static String input() {
		Scanner sc = new Scanner(System.in);
		return sc.nextLine();
	}
}
输入:ABCDSDGWERA!!

结果:

{!=2, A=2, B=1, C=1, D=2, E=1, G=1, R=1, S=1, W=1}
'!'出现了2次
'A'出现了2次
'B'出现了1次
'C'出现了1次
'D'出现了2次
'E'出现了1次
'G'出现了1次
'R'出现了1次
'S'出现了1次
'W'出现了1次

输入:ABCDSDGWERA!!

结果:

m1>>>{!=2, A=2, B=1, C=1, D=2, E=1, G=1, R=1, S=1, W=1}
'!'出现了2次
'A'出现了2次
'B'出现了1次
'C'出现了1次
'D'出现了2次
'E'出现了1次
'G'出现了1次
'R'出现了1次
'S'出现了1次
'W'出现了1次



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值