遍历一遍吧,每次遍历前先判断集合中是否存在该key,如果有了则将value值+1时间效率 O(n)最直观的算法,坐等楼下更快的算法~

解决方案 »

  1.   

    在csdn包下,写了一个,参考一下吧。。期待更好的方法package csdn;import java.util.HashSet;
    import java.util.LinkedHashMap;
    import java.util.Map;
    import java.util.Scanner;
    import java.util.Set;public class Test { public static void main(String[] args) {
    // TODO Auto-generated method stub
    Set<String> set = new HashSet<String>();
    Map<String,Integer> map = new LinkedHashMap<String, Integer>();
    String str;
    Scanner sc = new Scanner(System.in);
    str = sc.next();
    String t[] = str.split(",");
    for(String s :t){
    if(!set.add(s)){//不能添加成功说明set中已经有了
    map.put(s, map.get(s)+1);
    }else{
    map.put(s, 1);
    }
    }
    for(String key : map.keySet()){
    System.out.println(key + ":"+ map.get(key));
    }
    }}
      

  2.   

    运行时在控制台输入“a,b,c,a,a,b,上海,上海”即可。用LinkedHashMap是保证你字母的顺序,如果不想用那就换成HashMap吧。
    还有就是for循环里面if else可以反过来写阅读性更好一点。。
      

  3.   

    运行时在控制台输入“a,b,c,a,a,b,上海,上海”即可。用LinkedHashMap是保证你字母的顺序,如果不想用那就换成HashMap吧。
    还有就是for循环里面if else可以反过来写阅读性更好一点。。
    期待更优的办法
      

  4.   

    最好的办法是使用HashMap实现.
    注:HashSet是基于HashMap的实现.具体可看JDK源码.
    HashMap的实现就比较简单了.主体代码如下:public void main(String[] args){
        String[] arr = new String[]{"a","b","c","a","a","上海","上海"};
        Map<String,Integer> map = new HashMap<String,Integer>();
        for(String str : arr){
            if(map.containsKey(str)){
                map.put(str, map.get(str)+1);
            }else{
                map.put(str, 1);
            }
        }
    }
      

  5.   


    +1
    说好的让用HashSet实现呢?
      

  6.   


    import java.util.HashSet;
    import java.util.Set;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class TotalCount {
    public static void main(String[] args) {
    String abc = "a,b,c,a,a,b,上海,上海";
    String[] a = abc.split(",");
    String temp = "";
    Set sets = new HashSet();
    for (int i = 0; i < a.length; i++) {
    if (!temp.equals(a[i])) {
    temp = a[i];
    Pattern pt = Pattern.compile(a[i]);
    Matcher m = pt.matcher(abc);
    int index = 0;
    while (m.find()) {
    index++;
    }
    sets.add(a[i]+":"+index);//利用set中不允许有重复项,让JVM自动处理
    }
    }
    System.out.println(sets.toString());
    }
    }输出结果:[b:2, c:1, 上海:2, a:3]