JAva【汎用】統計文字列における【単一】文字の繰返し回数と最も繰返し回数と文字を出力
3866 ワード
構想:文字列を遍歴し、map統計頻度を格納し、listソートを転送し、統計する
26文字または大文字と小文字のみを統計する最適化
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文字または大文字と小文字のみを統計する最適化