dabocaiqq 2019-12-29 18:07 采纳率: 63.3%
浏览 147
已结题

悬赏问题,在线急等,速来!!!关于Java语言读取文本文件

Java语言读取文本文件,内含大约1000单词的文章,要求统计出现了多少个不同的单词(大小写不区分),并且按照出现的频率的倒序排序输出。

  • 写回答

1条回答 默认 最新

  • Motivation丶R 2019-12-30 10:21
    关注

    最简单的办法:读出文件流,按空格或“,”“.”等可能出现的符号拆分,放到map中,key是单词,value是出现次数,,最后排序就行了。

     public List<Map.Entry<String, Integer>> readFile(String path) throws Exception {
            File file = new File(path);
            BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
            String line = "";
            Map<String, Integer> map = new HashMap<>();
    
            while((line =reader.readLine()) != null){
                line = line.replaceAll("\\s+"," ");
                String[] split = line.split("[ |,|\\.]");
                for(String key : split){
                    if(null == map.get(key)){
                        map.put(key,1);
                        continue;
                    }
                    map.put(key,map.get(key) + 1);
                }
            }
    
    
            List<Map.Entry<String,Integer>> result = new ArrayList<>(map.entrySet());
            Collections.sort(result, new Comparator<Map.Entry<String, Integer>>() {
                @Override
                public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
                    if(o1.getValue() > o2.getValue()){
                        return -1;
                    }
                    if(o1.getValue() == o2.getValue()){
                        return 0;
                    }
                    return 1;
                }
            });
            return result;
        }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试