思路:先将字符串转为char数组,放入map集合中,利用键值对的结构存储数据,并且利用键不能重复可以求出字符出现次数(每次往集合中put数据时,键不会改变,改变的是对应的值)。
package com.test.bi;
import java.util.*;
public class CharTest {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("输入一个字符串");
String str = input.next();
HashMap<String, Integer> map = new HashMap<String, Integer>();
for (int i = 0; i < str.length(); i++) {
String var = String.valueOf(str.charAt(i));
if (!map.containsKey(var)) {
map.put(var, 1);
} else {
int aa = map.get(var);
map.put(var, aa + 1);
}
}
for (Map.Entry<String, Integer> maps : map.entrySet()) {
System.out.println(maps.getKey() + "的个数:" + maps.getValue());
}
//排序数组取得最大值
Collection<Integer> c = map.values();
Object[] obj = c.toArray();
Arrays.sort(obj);
//map通过value找到key
for (Map.Entry<String, Integer> maps : map.entrySet()) {
if (obj[obj.length - 1].equals(maps.getValue())) {
System.out.println(maps.getKey() + "这个字符出现的次数最多,共" + obj[obj.length - 1] + "个重复");
}
}
}
}
代码还有很多可以优化的片段,欢迎评论讨论