StringBuffer strBuf=new StringBuffer("a,b,c,d,e,f,a,a,d,c,c");
StringTokenizer st=new StringTokenizer(strBuf.toString(),",");
Map set=new TreeMap();
while(st.hasMoreTokens()) {
String temp=st.nextToken();
Object o=set.get(temp);
if(o==null)
    set.put(temp,new Integer(0));
else
    set.put(temp,new Integer(((Integer)o).intValue()+1));
}
//打印Set即可

解决方案 »

  1.   

    jFresH_MaN(The answer is .....)
    的实现方式很好,果然不愧是两个星的人,呵呵!
      

  2.   

    调试成功的完整结果:
    import java.util.*;
    public class Test {
    public static void main(String[] args) {
    StringBuffer strBuf=new StringBuffer("a,b,c,d,e,f,a,a,d,c,c");
    StringTokenizer st=new StringTokenizer(strBuf.toString(),",");
    Map set=new TreeMap();
    while(st.hasMoreTokens()) {
    String temp=st.nextToken();
    Object o=set.get(temp);
    if(o==null)
         set.put(temp,new Integer(1));
    else
         set.put(temp,new Integer(((Integer)o).intValue()+1));
    }
    Iterator i=set.keySet().iterator();
    while(i.hasNext()) {
    System.out.print((String)i.next()+" ");
    }
    System.out.println();
    Integer integer=(Integer)Collections.max(set.values());
    System.out.println(integer.intValue());
    }
    }
      

  3.   

    牛人!能不能介绍点有关java容器使用方法的资料啊?小弟这方面知道得太少了,看文档也不清楚怎么用,最好能找些有使用方法的资料
      

  4.   

    ibm中文开发者网站有一篇<java容器框架》的文章,很经典
      

  5.   

    jFresH_MaN(The answer is ......) 很不错的处理,收藏了
      

  6.   

    import java.util.*;
    import java.io.*;//用来计算单词出现的次数
    class Counter{
    private int i = 1;
    int read(){
    return i;
    }
    void increment(){
    i++;
    }
    }public class StringBufferToString{
    //private FileReader f;
    StringReader sr;
    //如要排序用TreeMap
    private HashMap counts = new HashMap();
    private StreamTokenizer st;

    StringBufferToString(StringBuffer s){
    if (s == null){
    throw new NullPointerException();
    }

    sr = new StringReader(s.toString());
    st = new StreamTokenizer(new BufferedReader(sr));
    }
    void countWords(){
    try{
    while(st.nextToken() != StreamTokenizer.TT_EOF){
    String s;
    switch(st.ttype){
    case StreamTokenizer.TT_EOL: 
    s = "EOL";
    break;

    case StreamTokenizer.TT_NUMBER: 
    s = String.valueOf(st.nval);
    break; 

    case StreamTokenizer.TT_WORD: 
    s = st.sval;
    break;
    default: 
    s = String.valueOf((char)st.ttype);
    }
    if (counts.containsKey(s))
    ((Counter)counts.get(s)).increment();
    else
    counts.put(s, new Counter());
    }
    }catch(IOException e){
    System.err.println("countWords() unsuccessful");
    }
    }
    public Set keySet(){
    return counts.keySet();
    }
    public Counter getCounter(String key){
    return (Counter)counts.get(key);
    }
    public String getString(){
    Iterator it = this.keySet().iterator();
    String k;
    String result = "";
         while(it.hasNext()){
         k = (String)it.next();
         if(k.equals(",")){
         continue;
         } 
         result = result + k + ",";
         }
         result = result.substring(0, result.length() - 1);
         return result;
    } public static void main(String[] args) throws FileNotFoundException{
         StringBuffer sb = new StringBuffer("a,b,c,d,e,f,a,a,d,c,c");
         StringBufferToString wc = new StringBufferToString(sb);
         wc.countWords();
         Iterator it = wc.keySet().iterator();
         String k;
         while(it.hasNext()){
         k = (String)it.next();
         if(k.equals(",")){
         continue;
         }
         System.out.println(k + " : " +
         wc.getCounter(k).read());
         }    
         System.out.println(wc.getString());
        }

    }
      

  7.   

    上面的一段代码是从thinking in java上改过来的,用的是功能十分强大的StreamTokenizer(而非StringTokenizer),希望可以帮到楼主