用java 编写,编写一个程序,从控制台输入一串字符串,统计并输出每个字符(不区分大小写)出现的次数。结果需要按照字符出现的频率从高到低排序,如果频率相同,则按字母顺序排序。要求使用合适的集合实现。
时间: 2025-01-01 12:37:07 浏览: 10
你可以使用Java的HashMap来存储每个字符及其出现的次数,然后使用TreeMap对结果进行排序。TreeMap首先按照键的自然排序进行排序,如果有相同的键,再按照值(出现次数)降序排列。以下是实现的示例代码:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一串字符串:");
String input = scanner.nextLine().toLowerCase(); // 转化为小写,便于统计
// 使用HashMap存储字符及出现次数
Map<Character, Integer> charCountMap = new HashMap<>();
for (char c : input.toCharArray()) {
charCountMap.put(c, charCountMap.getOrDefault(c, 0) + 1);
}
// 使用TreeMap对结果进行排序
List<Map.Entry<Character, Integer>> sortedEntries = new ArrayList<>(charCountMap.entrySet());
Collections.sort(sortedEntries, (a, b) -> {
int countDiff = b.getValue() - a.getValue();
return countDiff == 0 ? a.getKey().compareTo(b.getKey()) : countDiff;
});
for (Map.Entry<Character, Integer> entry : sortedEntries) {
System.out.println("字符 " + entry.getKey() + " 出现了 " + entry.getValue() + " 次");
}
}
}
```
阅读全文