各位大神,请教一段算法
一字符串:String str="10,16,0,8,19,11,16,10,16,5,17,11,16,13,3";
数字使用逗号隔开,统计出每个数字出现的次数。使用map<数字,次数>;
谢谢。字符出现的次数

解决方案 »

  1.   

    public void getCount(String str) {
    if ("".equals(str)) {
    return;
    } String data[] = str.split(",");
    Map<String, Integer> countMap = new HashMap<String, Integer>();
    for (String strData : data) {
    int count = 1;
    if (countMap.containsKey(strData)) {
    count += countMap.get(strData);
    }
    countMap.put(strData, count);
    } for (Map.Entry<String, Integer> entry : countMap.entrySet()) {
    System.out.println(entry.getKey() + " : " + entry.getValue());
    } }
      

  2.   

    1.可以得到数字的数组,然后排序统计
    2.也可以直接统计每次得到一个字符,存放map,有+1,
                                       没有添加
      

  3.   

    这样似乎更好for (String strData : data) {
    if (countMap.containsKey(strData)) {
    countMap.put(strData,countMap.get(strData)+1);
    } else {
    countMap.put(strData,1);
    }
    }
      

  4.   

    1.可以得到数字的数组,然后排序统计
    2.也可以直接统计每次得到一个字符,存放map,有+1,
                                       没有添加 
    我是里混的
      

  5.   


    import java.util.HashSet;
    import java.util.HashMap;
    public class Test { public static void main(String[] args) {
    // TODO Auto-generated method stub
    String str="10,16,0,8,19,11,16,10,16,5,17,11,16,13,3";
    String temp[] = str.split(",");
    HashSet <String>myset = new HashSet<String>();
    HashMap <String, Integer>mymap = new HashMap<String, Integer>();
    for (int i = 0 ; i < temp.length; i++) {
    if (myset.add(temp[i])) {
    mymap.put(temp[i],1);
    } else {
    mymap.put(temp[i], ((Integer)mymap.get(temp[i]) + 1));
    }
    }
    System.out.println(mymap);
    }}
      

  6.   

    import java.util.HashMap;
    import java.util.Map.Entry;public class TestMain {

    public static void main(String[] args) {

    String str="10,16,0,8,19,11,16,10,16,5,17,11,16,13,3";
    String[] numbers = str.split(",");

    java.util.Map<String,Integer> maps = new HashMap<String,Integer>();
    for(String s : numbers){
    if(maps.containsKey(s)){
    int num = maps.get(s);
    num++;
    maps.put(s, num);
    }else{
    maps.put(s, 1);
    }
    }

    for(Entry<String, Integer> entry : maps.entrySet()){
    System.out.println("数字:"+entry.getKey()+",出现次数:"+entry.getValue());
    }
    }

    }
    结果:
    数字:0,出现次数:1
    数字:11,出现次数:2
    数字:13,出现次数:1
    数字:3,出现次数:1
    数字:16,出现次数:4
    数字:5,出现次数:1
    数字:17,出现次数:1
    数字:8,出现次数:1
    数字:19,出现次数:1
    数字:10,出现次数:2
      

  7.   

    你们这样直接把code写出来,还让别人学什么!!!
      

  8.   


    String str="10,16,0,8,19,11,16,10,16,5,17,11,16,13,3";
    String[] numbers = str.split(",");
    Map<String,Integer> countMap= new HashMap<String,Integer>();
    for(String num: numbers ){
      
       countMap.contain(num) ? countMap.put(strData,countMap.get(strData)+1) : countMap.put(strData,1);
    }