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