问题:输入一串字符串  以逗号隔开,然后把每个的字符串统计一下出现了几次,最后以出现次数由大到小排列该元素

解决方案 »

  1.   

    楼上好快,HashMap是比较好的办法。
      

  2.   

    已经用了hashmap,谁能就第二个要求说说思路
      

  3.   

    HashMap key值唯一。把单词做key,无重复值value为1,有重复值value++
      

  4.   


      import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    import java.util.Map;
    import java.util.TreeMap;public class TestTreeMap { /**
     * @param args
     */
    public static void main(String[] args) {
    String str ="a,c,b,b,c,d,c,s,c,b,c,d,s,c,b,d,s,a,a,a,a,a,a,s,d,f,f,b,d";
    String[] strArr = str.split(",");
    TreeMap countMap = new TreeMap();
    for(int i=0;i<strArr.length;i++){
    if(!countMap.containsKey(strArr[i])){
    countMap.put(strArr[i], 1);
    }else{
    int value = (Integer)countMap.get(strArr[i]);
    countMap.put(strArr[i], value+1);
    }
    }

    System.out.print("排序前::"+countMap);



     List<Map.Entry<String, Integer>> info = new ArrayList<Map.Entry<String, Integer>>(countMap.entrySet());
            Collections.sort(info, new Comparator<Map.Entry<String, Integer>>() {
                public int compare(Map.Entry<String, Integer> obj1, Map.Entry<String, Integer> obj2) {
                    return obj2.getValue() - obj1.getValue();
                }
            });
            
            for (int j = 0; j<info.size();j++) {
                System.out.println(info.get(j).getKey() + "------->" + info.get(j).getValue());
            }
        }
    }
      

  5.   

    杀鸡不用牛刀吧,用数组,开销小一些~~import java.util.Scanner;public class Test {
    public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    String str = s.nextLine();
    int[] cnt = new int[128];
    char[] chars = str.toCharArray();
    for (int i = 0; i < chars.length; i++) {
    cnt[chars[i]]++;
    }
    }
    }
      

  6.   


    /**
     * 输入一串字符串 以逗号隔开,然后把每个的字符串统计一下出现了几次,最后以出现次数由大到小排列该元素
     * @author think
     *
     */
    import java.io.*;
    import java.util.*;
    public class Split {
    public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new 
    InputStreamReader(System.in));
    String str = br.readLine();
    String[] s = str.split(",");

    HashMap<String,Integer> hm = new HashMap<String,Integer>();

    for(int i=0; i<s.length; i++) {
    boolean ifAdd = true;
    Set<String> ks = hm.keySet();
    for(String str1 : ks) {

    if(str1.equals(s[i])) {
    int k = hm.get(str1);
    hm.put(s[i], k+1);
    ifAdd = false;
    break;

    }
    if(ifAdd) {
    hm.put(s[i], 1);
    }


    }
    Set<String> ss = hm.keySet();
    int[] a = new int[ss.size()];
    int k = 0;
    for(String str1 : ss) {
    int i = hm.get(str1);
    a[k++] = i;
    }
    for(int i=0; i<a.length-1; i++) {
    for(int j=i+1; j<a.length; j++) {
    if(a[i] < a[j]) {
    int t = a[i];
    a[i] = a[j];
    a[j] = t;
    }
    }
    }
    System.out.println(Arrays.toString(a));
    String[] b = new String[ss.size()];
    for(String str1 : ss) {
    int i = hm.get(str1);
    for(int m=0; m<a.length; m++) {
    System.out.println(a[m]);
    if(a[m] == i) {
    if(b[m] != null) {
    continue;
    }
    b[m] = str1;
    break;
    }
    }
    }
    for(int i=0; i<b.length; i++) {
    System.out.println(b[i] + ":" + a[i]);
    }
    }
    }
      

  7.   

    排序的话是先compartor接口就行了
      

  8.   

    我是个初学者 楼主能告诉我你是怎么想的啊 我第一个想到的也是hashmap
      

  9.   

    package com.huawei.array;import java.util.HashMap;
    import java.util.Map;
    import java.util.Scanner;public class Array
    {
        @SuppressWarnings("unchecked")
        public static void main(String[] args)
        {
            Scanner input = new Scanner(System.in);
            System.out.println("请输入一串字符串,用,号隔开...");
            String InputStr = input.next();
            String chars[] = InputStr.split(",");
            Map<String, Integer> map = new HashMap<String, Integer>();
            for (String s : chars)
            {
                if (!map.containsKey(s))
                {
                    map.put(s, 1);
                }
                else
                {
                    map.put(s, map.get(s) + 1);
                }
            }
            for (String key : map.keySet())
            {
                System.out.println(key + "\t" + map.get(key));
            }
            int temp = 0;
            int count=0;
            for (String s : map.keySet())
            {
                temp = map.get(s);
                for (String key : map.keySet())
                {
                    count=map.get(key);
                    if (count > temp)
                    {
                        temp=count;
                        s = key;
                    }
                }
                System.out.println(s);
                map.put(s, -1);
            }
        }
    }