import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
public class StringTest1 {
/**
* *Test1--取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq",输出格式为:a(2)b(1)k(2)...
*/
public static void main(String[] args) {
//调用输入字符串方法
String str = getString();
//调用获取字符串出现次数方法
HashMap<Character, Integer> hm = getStringNum(str);
//HashMap集合传递给打印字符出现次数方法
printStrNum(hm);
}
/*
* 统计字符串出现的次数
*/
public static HashMap<Character, Integer> getStringNum(String str){
//创建一个HashMap集合对象
HashMap<Character, Integer> hm = new HashMap<Character,Integer>();
//将传入的字符串转为字符数组
char[] arr = str.toCharArray();
for(char c : arr){
//判断集合中是否已经包含了这个键
if(hm.containsKey(c)){
//如果不包含,传入键为c的字符,值为通过集合获取到指定键的值再加1
hm.put(c, hm.get(c) + 1);
}else{
//否则直接传入c和1;
hm.put(c, 1);
}
}
return hm;
}
/*
* 输入字符串
*/
public static String getString(){
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//提示输入一个整数
System.out.println("请输入字符串");
//获取键盘录入的字符串
String str = sc.nextLine();
//将字符串返回
return str;
}
/*
* 打印字符串出现的次数
*/
public static void printStrNum(HashMap<Character, Integer> hm){
/*//通过HashMap的ketSet方法获取到所有的键,返回一个Set集合
Set<Character> set = hm.keySet();
//遍历Set集合
for (char cha : set) {
//获取到了所有的键的值,通过HashMap对象的get方法获取到所有指定键的值,并通过指定格式输出键值对
System.out.print(cha + "(" + hm.get(cha) + ")" + " ");
}*/
Set<Map.Entry<Character, Integer>> set = hm.entrySet();
for(Map.Entry<Character, Integer> me : set){
System.out.print(me.getKey() + "(" + me.getValue() + ")");
}
/*Iterator<Entry<Character, Integer>> it = set.iterator();
while(it.hasNext()){
Entry<Character, Integer> e = it.next();
System.out.print(e.getKey() + "(" + e.getValue() + ")");
}*/
}
} |