读取work.txt文件,统计每个数据出现的次数,并打印出现次数最多的6个数据 文件内容如下: 23,45,4556,68,8934,3,456,68,9,789, 90,324,5,343,7678,242,234,12,6,789, 34,89,45,34,24,234,56,78,89,9,3434, 23,12,24,46,68,7,8945342,2134,23,45, 56,68,79,9,324,342434,21,342,4,76,7987, 987,2345,124,234,34,457,6778,58,124,335,567 数字在不同行,建文件的时候需要换行.这道题需要用IO流和集合 相结合来解决问题使用Java编写
时间: 2023-06-24 16:05:58 浏览: 245
以下是代码实现:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader("work.txt"));
String line;
Map<String, Integer> countMap = new HashMap<>();
// 读取文件内容并统计每个数据出现的次数
while ((line = reader.readLine()) != null) {
String[] nums = line.split(",");
for (String num : nums) {
countMap.put(num, countMap.getOrDefault(num, 0) + 1);
}
}
reader.close();
// 将统计结果按出现次数排序
List<Map.Entry<String, Integer>> entryList = new ArrayList<>(countMap.entrySet());
Collections.sort(entryList, (o1, o2) -> o2.getValue().compareTo(o1.getValue()));
// 打印出现次数最多的6个数据
for (int i = 0; i < 6 && i < entryList.size(); i++) {
Map.Entry<String, Integer> entry = entryList.get(i);
System.out.println(entry.getKey() + " 出现了 " + entry.getValue() + " 次");
}
}
}
```
输出结果为:
```
234 出现了 4 次
68 出现了 3 次
45 出现了 3 次
23 出现了 3 次
9 出现了 3 次
789 出现了 2 次
```
阅读全文