1. 程式人生 > 其它 >java找字串中出現最多的字元和次數

java找字串中出現最多的字元和次數

String str = "8288822";
char[] chars = str.toCharArray();
Map<Character,Integer> map = new HashMap<>();
for (char c : chars) {
if (map.containsKey(c)){
map.put(c,map.get(c)+1);
}else {
map.put(c,1);
}
}
//將次數由大到小排放
List<Map.Entry<Character, Integer>> list = new ArrayList<Map.Entry<Character,Integer>>(map.entrySet());
Collections.sort(list,new Comparator<Map.Entry<Character, Integer>>() {
@Override
public int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});

//如果有單個最大次數
if (!list.get(0).getValue().equals(list.get(1).getValue())){
System.out.println(list.get(0).getKey()+":"+list.get(0).getValue());
}
//防止次數持平 進一步做判斷
Map<Character, Integer> map1 = new HashMap<>();
for (int i = 0; i < list.size(); i++) {
if (i+1==list.size()){
break;
}
if (list.get(i).getValue().equals(list.get(i+1).getValue())){
map1.put(list.get(i).getKey(),list.get(i).getValue());
map1.put(list.get(i+1).getKey(),list.get(i+1).getValue());
}else {
break;
}
}
//列印 k:v
for (Character character : map1.keySet()) {
System.out.println(character+":"+map1.get(character));
}