案例需求
键盘录入一个字符串,要求统计字符串中每个字符串出现的次数。
举例:键盘录入“aababcabcdabcde” 在控制台输出:“a[5]b[4]c[3]d[2]e[1”
实现思路
- 键盘录入字符串用Scanner实现键盘输入字符串
- 使用TreeMap来保存数组,因为TreeMap可以用键值对的形式保存,还可以实现排序,所以创建TreeMap集合
- 遍历字符串,使用for循环来实现,并用CharAt(i)来获取字符中的每一个字符(键)。
- 接下来使用get(key)获取每个键的value值,判断value是否等于空,如果为空将value赋值为1,并将键和值添加到集合中,如果value不等于1,即value++,并将键值添加到集合中。
- 创建容器StringBuilder 来保存集合的键和值,通过keySet()方法来获取键(key),通过get(key)获取 ( value )。并通过append()方法把键和值添加到容器中。
- 最后使用toString()方法将容器转换为String类型
代码实现
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
public class Test03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串");
String str = sc.nextLine();
TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();
for (int i=0;i<str.length();i++){
char key = str.charAt(i);
Integer value = tm.get(key);
if (value == null){
tm.put(key,1);
}else{
value++;
tm.put(key,value);
}
}
StringBuilder st = new StringBuilder();
Set<Character> keys = tm.keySet();
for (Character k : keys){
Integer i = tm.get(k);
st.append(k).append("[").append(i).append("]");
}
String s = st.toString();
System.out.println(s);
}
}