循环从控制台录入26个英文字符,退出后统计每个字符的个数
void countEnFrequency(){
Scanner scanner = new Scanner(System.in);
int[] hash = new int[85];
System.out.println("请在控制台属于26个英文字母。");
for (int i = 1; i <= 26; i++) {
if(!check(hash, i, scanner)){
check(hash, i, scanner);
}
}
ArrayList<String> count = new ArrayList<>();
for (int i = 0; i < 85; i++) {
if(hash[i] > 0) {
count.add(String.valueOf((char) (i + 'A')) + "=" + hash[i]);
}
}
System.out.println(count.toString());
}
boolean check(int[] hash, int idx, Scanner scan) {
System.out.print(idx + ":");
String input = scan.next();
if(input.length() == 1) {
if(Character.isLetter(input.charAt(0))) {
hash[input.charAt(0) - 'A']++;
return true;
} else {
System.out.println("输入不合法,请重新键入");
return false;
}
}
System.out.println("输入不合法,请重新键入");
return false;
}
List<Integer> types = new ArrayList<Integer>(){{add(1); add(2); add(3); add(0);add(0);}};
Map<Integer, Long> collect4 = types.stream().collect(Collectors.groupingBy(Integer::intValue, Collectors.counting()));
实时多次输入统计:
对于这个需求,用Hash好一点。
先用HashMap < String, Integer>进行字母和次数的统计,再将其进行遍历输出。
用链表的话每次输入都要循环链表去维护次数,而用hash查找对应的字母快一点。
输入一次统计:
直接写一个字符串分析方法,将其中的字母分类统计出来。