近期遇到这个题目的时候,大致思路是有就是读取文件,字符串转字符数组,排除重复的内容比较次数,结果问题就卡到这里,忘记使用map的键值对的特性,以及Collections.sort和Collections.reverse两个方法。为了方便以后的使用,就把解决方法完成到这里,但是这里读取文件时空格也是在统计内,且中文没有做处理。

具体的代码如下:

public class Qu {
public static void main(String[] args) {
demo(new File("F:\\qu\\a.txt"));
}

public static void demo(File file) {
BufferedReader bfr = null;
try {
bfr = new BufferedReader(new FileReader(file));//读文件
String strs = null, str = null;
while ((str = bfr.readLine()) != null) {
strs = strs + str;
}
char[] ch = strs.toCharArray();//读到的字符串,转为字符数组
TreeMap<Character, Integer> map = new TreeMap<Character, Integer>(
Collections.reverseOrder()); //将字符数组放入Map对象集合中,字符作为键,出现的次数作为值
for (int i = 0; i < ch.length; i++) {
char c = ch[i];
if (map.containsKey(c)) {
int count = map.get(c);
map.put(c, count + 1);
} else {
map.put(c, 1);
}

}
/*//遍历Map集合
Set<Map.Entry<Character, Integer>> set = map.entrySet();
java.util.Iterator<Entry<Character, Integer>> iterator = set
.iterator();
while (iterator.hasNext()) {
Map.Entry<Character, Integer> m = iterator.next();
char k = m.getKey();
int v = m.getValue();
System.out.println(k + "---" + v);
}*/
List<Entry<Character, Integer>> list = new ArrayList<Entry<Character, Integer>>(
map.entrySet());
Collections.sort(list,
new Comparator<Map.Entry<Character, Integer>>() {
// 升序排序
public int compare(Entry<Character, Integer> o1,
Entry<Character, Integer> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
Collections.reverse(list);//反转,List有升序变为降序
for (Entry<Character, Integer> e : list) {
System.out.println(e.getKey() + ":" + e.getValue());
}
System.out.println("前五条数据");
list = list.subList(0, 5);//截取子List,读取前五个字符以及出现的次数
for (Entry<Character, Integer> e : list) {
System.out.println(e.getKey() + ":" + e.getValue());
}
} catch (FileNotFoundException e) {
System.out.println("找不到文件!");
e.printStackTrace();
} catch (IOException e) {
System.out.println("文件读取错误!");
e.printStackTrace();
}
}

}

欢迎诸位指导。

转载于:https://www.cnblogs.com/zhishifx/p/7219125.html

读取一个文件,获取其中出现次数最多的前五个字符以及次数相关推荐

  1. 读取一个文件,将其Base64编码,每76个字符加一个换行

    <?php //读取一个文件,将其Base64编码,每76个字符加一个换行 $path = 'C://UsbLogger.txt'; if(is_file($path))//判断是否为文件 {$ ...

  2. python读取一个文件夹/子文件夹下的所有文件名字

    python读取一个文件夹/子文件夹下的所有文件名字 示例代码: import osfile_path = './images/' all_file_name = os.listdir(file_pa ...

  3. java基础IO流使用读取一个文件中的文字输出到控制台上

    读取一个文件中的文字输出到控制台上 import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IO ...

  4. 不用for loop循环一个读取一个文件

    不用for loop循环一个读取一个文件 怎样在不使用for loop的情况下循环读取一个文件并将内容显示出来呢? #!/usr/bin/env python #coding:utf-8 #@Auth ...

  5. Lua 如何快速的读取一个文件

    2019独角兽企业重金招聘Python工程师标准>>> 如何使用Lua 优雅并快速的读取一个文件的全部内容? 在这里我们可以看一下代码: local open = io.open l ...

  6. python统计出现次数最多的词语_python编程:统计文件中出现次数最多的前10个词,并按出现次数排列它们...

    python编程:统计文件中出现次数最多的前10个词,并按出现次数排列它们. 下面我编写的这个程序可以用作:统计文件中所有的字符数.行数.出现次数最多的单词. # -*- coding:utf-8 - ...

  7. Python统计列表中重复次数最多的前N个元素

    from collections import Counter a = [1, 1, 7, 3, 6, 2, 5, 4, 4, 3, 9, 4, 4, 1] #统计列表中重复次数最多的前N个元素 N ...

  8. 使用vue获取富文本编辑器文字内容前50个字符

    获取文章内容的前50个字符放在内容描述里 vue布局 <!--内容描述--><el-form-item label="内容描述:"prop="abstr ...

  9. python中获取目录下所有文件名以及读取一个文件内的每一行

    2020-12-25 读取目录下所有文件 img_list=os.listdir(img_path) 获取img_path下所有文件名,返回值类型为list,同时也可以得到该目录下所有文件夹名 读取文 ...

最新文章

  1. 控制~线性二次型最优控制
  2. 4.02Day12函数 装饰器
  3. case --when
  4. libevent源码深度剖析十
  5. 4 SD配置-企业结构-定义-定义销售办公室
  6. SQL Server数据库快照
  7. 控制虚拟服务器的软件,虚拟主机控制面板
  8. ZMQ == 服务端创建,接受请求的过程
  9. java string简单例子_java从字符串中提取数字的简单实例
  10. 增选54位院士,京东副总裁梅涛等18位华人入选!
  11. c语言程序经过链接以后生成的文件名的后缀为,请多多指教,感激不尽11.C语言程序经过编译以后生成的文件名的后缀为( ).A..c B..obj C..exe D.....
  12. Windows timeout命令
  13. ##DBUtils工具类的正确使用(一)
  14. uboot dnw 源码分析
  15. 如何阻止华为杀应用_如何解决华为手机“杀后台”严重的情况呢?小技巧就能轻松搞定...
  16. C语言九:位域(位域声明、位域的定义和位域变量的说明、对于位域定义的几点说明:、位域的使用)、typedef(typedef vs #define)、强制类型转换(整数提升、常用的算术转换)
  17. C语言拯救者(程序的预处理、编译、链接与宏- -15)
  18. ICMP 是如何工作的?
  19. 可玩性低的区块链游戏存在的意义
  20. 绕组温升快速测试方案

热门文章

  1. Redis学习笔记(八)——持久化
  2. Qt5.3.2openglVS2010_QSqlField_字段类型
  3. C++ 自由存储区是否等价于堆?
  4. 20150720 Two heads are better than one
  5. android 应用间共享数据,调用其他app数据资源
  6. window.onload和$(document).ready()区别很大……
  7. [Win] 利用Memory DC抽取EXE的图标并保存为BMP文件
  8. 七种与輻射和平相處的妙法 - 生活至上,美容至尚!
  9. 直播预告 | 共识、区块链和全球一体化经济
  10. 数据结构与算法之KMP算法02