用Java编写一个能计算一段文本内容中出现单词的次数的降序排列的小程序。
时间: 2024-03-25 22:38:59 浏览: 75
好的,以下是Java代码实现:
```java
import java.util.*;
public class WordCount {
public static void main(String[] args) {
// 输入文本内容
Scanner sc = new Scanner(System.in);
System.out.println("请输入文本内容:");
String text = sc.nextLine();
// 将文本内容中的标点符号替换为空格
text = text.replaceAll("[^a-zA-Z]", " ");
// 将文本内容转换为小写字母
text = text.toLowerCase();
// 将文本内容按照空格分割成单词
String[] words = text.split("\\s+");
// 使用HashMap统计每个单词出现的次数
Map<String, Integer> wordCountMap = new HashMap<>();
for (String word : words) {
if (wordCountMap.containsKey(word)) {
wordCountMap.put(word, wordCountMap.get(word) + 1);
} else {
wordCountMap.put(word, 1);
}
}
// 将单词出现次数存入List中
List<Map.Entry<String, Integer>> wordCountList = new ArrayList<>(wordCountMap.entrySet());
// 对单词出现次数进行降序排列
Collections.sort(wordCountList, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
// 输出每个单词及其出现次数
System.out.println("单词出现次数降序排列如下:");
for (Map.Entry<String, Integer> entry : wordCountList) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
}
```
运行程序后,输入要统计的文本内容,程序会输出每个单词及其出现次数的降序排列结果。
阅读全文