黑马程序员技术交流社区

标题: 什么时候用StringBuilder,下面的代码是不是就是为了调append方法 [打印本页]

作者: 王海中    时间: 2015-10-18 16:56
标题: 什么时候用StringBuilder,下面的代码是不是就是为了调append方法
package co.wang;

import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;

/*
*
* 统计字符串中个字母出现的次数
* 如aababcabcdancde结果:a(5)b(4)c(3)d(2)e(1)
* 分析:
* 定义键盘录入字符串
* 定义一个Map集合     (由题意的返回的是一个有序的字符串,所以用TreeMap集合:有序(排序性)、唯一性)
*                 键:Character                注意:这里是数据类型,首字母必须要大写!!
*                 值:Integer
* 把字符串变成字符数组
* 遍历数组得到每一个字符
* 把拿到的字符作为键到集合中去找看是佛又返回值
*                 是null:添加,并值为1
*                 不是nul:覆盖,值++
* 定义字符串缓冲区
* 遍历集合并按照要求拼接
* 把字符串缓冲区变成字符输出
*
*/
public class sumarrayDemo {

        public static void main(String[] args) {
               
               
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个字符串:");
                String line =sc.nextLine();
                TreeMap<Character,Integer> tm= new TreeMap<Character,Integer>();
                char[] chs = line.toCharArray();
                //遍历数组得到字符
                for(char ch:chs){
                        //把拿到的字符作为键到集合中去找看是佛又返回值
                        Integer i=tm.get(ch);//char自动拆装箱,并返回值复制给integer类型的值
                        if(i==null){
                               
                                //i==null,添加,并赋值 值为1
                                tm.put(ch, 1);
                        }
                        else
                        {
                                //i!==null,覆盖,并值++
                                i++;
                                tm.put(ch,i);
                        }
                       
                       
                }
                StringBuilder sb = new StringBuilder();
                Set<Character> set =  tm.keySet();
                for(Character key:set){
                       
                        Integer value = tm.get(key);
                        sb.append(key).append("(").append(value).append(")");
                       
                }
                String result = sb.toString();
                System.out.println(result);
        }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2