码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-02-08 10:35:55      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:tor   array   tac   new   length   entry   ons   com   nta   

直接上代码:

public class Test {

    public static void main(String[] args) {
        demo(new File("E:\\aa.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);
                }

            }

            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();
        }
    }
}

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

标签:tor   array   tac   new   length   entry   ons   com   nta   

原文地址:https://www.cnblogs.com/yuanfei1110111/p/10355894.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!