思路:单个字符char的编码可以直接用做int值作为数组索引,遍历字符串,字符数组[字符编码的int值]自增,貌似不是很完善
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("字符数组统计");
char[] count = new char[50000];//【考虑字符编码的最大值】
for (int i = 0; i < str.length(); i++) {
count[str.charAt(i)] = (char) (count[str.charAt(i)] + 1);//str.charAt(i)返回的char直接作为索引
}
toenum(count);
}
public static void toenum(char[] count) {
for (int i = 0; i < count.length; i++) {
if (count[i] > 0) {
char c = (char) i;//int转char
int ci = count[i];//char转int
System.out.println("字符:" + c + " 编码:" + i + " 频次:" + ci);
}
}
}
}
然后把count字符数组存入map,再转list排序,
参考:java【通用】统计字符串中重复【单个】字符的次数频次并输出重复最多的次数和字符
- 不能使用Arrays.sort(count)(只对值排序,破坏索引)
- 可以遍历转存list排序,过滤掉无用的数组