JAva【汎用】統計文字列における【単一】文字の繰返し回数と最も繰返し回数と文字を出力

3866 ワード

構想:文字列を遍歴し、map統計頻度を格納し、listソートを転送し、統計する
public class Test {

    public static void main(String[] args) {
        String str="sdfjklsajfoiwernjkwnerkwndfs";
        count(str);
        String str2="             ";
        count(str2);

    }

    public static void count(String str){
        System.out.println("     :"+str);
        System.out.println("HashMap    ");
        HashMap hm = new HashMap();
        for(int i=0;iif(!hm.containsKey(one)){
                hm.put(one,1);
            }else{
                hm.put(one,hm.get(one) +1);
            }
        }
        for(Map.Entry entry: hm.entrySet()){
            System.out.println(entry.getKey()+" "+entry.getValue());
        }
        System.out.println("map  list,     ");
        ArrayList< Map.Entry > al = new ArrayList<>(hm.entrySet());
        Collections.sort(al, new Comparator>() {
            @Override
            public int compare(Map.Entry o1, Map.Entry o2) {
                return o2.getValue() - o1.getValue(); //  
            }
        });
        for(Map.Entry entry: al){
            System.out.println(entry.getKey()+" "+entry.getValue());
        }
        System.out.println("------------------------------");
        int maxCount = al.get(0).getValue();
        System.out.println("      :"+maxCount);
        System.out.print("        :");
        for(Map.Entry entry: al){
            if (entry.getValue().equals(maxCount) ){
                System.out.print(entry.getKey());
            }else {
                break; //    ,           
            }

        }
        System.out.println("");
    }

}

26文字または大文字と小文字のみを統計する最適化