首页 > 编程语言 >java读取文件并统计出现前N个单词

java读取文件并统计出现前N个单词

时间:2022-10-22 09:11:11浏览次数:72  
标签:java 读取 strs 单词 tm new import String

Java文件操作---输出单个文件中常出现的前N个英语单词 - 千幽行 - 博客园 (cnblogs.com)

package classtest;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.TreeMap;

public class liu {
    public static void main(String[] args) {
        //读取文件
        File file=new File("D:\\javaidea\\work\\classtest01\\wenjian\\HP7.txt");
        Scanner in=new Scanner(System.in);
        try {
            FileReader fr = new FileReader(file);
            BufferedReader bufr = new BufferedReader(fr);
            //按行读取返回的字符串
            String s = null;
            //将所有s字符串拼接
            String all = null;
            while((s=bufr.readLine())!=null){
                all = all + s;
            }
            //定义TreeMap
            Map<String,Integer> tm = new TreeMap<>();
            //按找非数字字母符号分割字符串,组成字符串数组
            String[]strs = all.split("[^a-zA-Z0-9]");
            //用于存放字符串的数组
            String[]r1=new String[strs.length];
            //用于存放字符串出现次数的数组
            int[]r2=new int[strs.length];
            //读取分割后的字符串数组,使用TreeMap存入字符串(key)及其出现次数(value)
            for(int i = 0; i < strs.length; i++){
                strs[i].toLowerCase();
                if(!tm.containsKey(strs[i])){
                    tm.put(strs[i], 1);
                }else{
                    Integer counts = tm.get(strs[i]);
                    tm.put(strs[i], counts+1);
                }
            }
            int j=0;
            //遍历TreeMap,摘取key和value,分别存入事先构建好的数组(foreach)
            for(Entry<String,Integer>entry:tm.entrySet()) {
                r1[j]=entry.getKey();
                r2[j]=entry.getValue();
                j++;
            }
            //冒泡降序排序
            for(int p=0;p<strs.length-1;p++) {
                for(int q=0;q<strs.length-1-p;q++) {
                    if(r2[q]<r2[q+1]) {
                        int temp=r2[q];
                        r2[q]=r2[q+1];
                        r2[q+1]=temp;
                        String tems=r1[q];
                        r1[q]=r1[q+1];
                        r1[q+1]=tems;
                    }
                }
            }
            int l=in.nextInt();
            //存储完成后的数组首元素非字符串(:r2[0]),未能成功消去所以从第二个开始输出。
            for(int i=1;i<l+1;i++) {
                System.out.println(r1[i]+":"+r2[i]);
            }
            //关闭
            in.close();
            bufr.close();
            fr.close();
        }catch(Exception e){
            e.printStackTrace();
        }
    }

}

 

标签:java,读取,strs,单词,tm,new,import,String
From: https://www.cnblogs.com/hmy22466/p/16815304.html

相关文章

  • Java多线程(1):线程生命周期
    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 从事Java开发这些年来,如果要问我Java当中最难的部分是什么?最有意思的部分是什么?最多人讨论的部分是什么?那我会毫不犹豫......
  • JavaScript中的Generator生成器的基本用法
    ES6入门-阮一峰:Generator函数1.介绍Generator生成器是ES6提供的一种异步编程解决方案。是一个极为灵活的结构,拥有在函数块中暂停和恢复代码执行的能力。执行Gen......
  • Java语言程序设计第五讲,异常处理
    学习Java变成过程中我们遇到过许多程序报错现象之后我们会查看报错原因,对代码进行有针对性的修改从而使其恢复正常 这就是异常处理的目的和用途:计算机提供准确的错徐信......
  • java基础知识
    JAVA基础知识标识符和关键字关键字标识符无论类名、方法名、变量名都是标识符命令规则:所有标识符都应该以大小写字符、美元符号、或下划线开始首字符后可以......
  • Java程序设计语言第四讲,继承与多态
    Java中通过extends实现继承并且,Java中只允许单继承,从而避免里多继承中可能产生的父类属性冲突问题。子类自动拥有父类声明的public和protected的成员。 继承条件下的......
  • 不妨试试更快更小更灵活Java开发框架Solon
    @目录概述定义性能架构实战SolonWeb示例SolonMybatis-Plus示例SolonWebSocket示例SolonRemotingRPC示例SolonCloudNacos示例概述定义Solon官网地址https://so......
  • 手写基于Java RMI的RPC框架
    留给读者其中最大的区别就是ZooKeeper注册中心,注册中心可以有读写监听器,这是一个优势,可以用来实现订阅通知,也能做数据的同步,甚至可以做基于读写分离的RPC框架,而且它是基......
  • JavaScript实现数据结构 -- 集合
    集合集合是一种无序且唯一的数据结构,在ES6中有集合Set。集合的常用操作去重使用Set结合展开运算符实现数组去重。判断元素是非在集合中使用Set的has方法判断元素是......
  • JavaScript实现数据结构 -- 字典
    字典字典与集合类似,也是一种存储唯一值的数据结构,字典以键值对的形式进行存储,在ES6中有字典Map。字典的常用操作增使用set()方法可以向字典中添加新成员,可连续添加。......
  • JAVA基本类型和包装类型
    JAVA基本类型和包装类型前言Java语言中的数据类型分为基本数据类型和引用类型,而我们进行Java开发的时候都听说过基本数据类型和包装类型,今天我们就来详细聊一聊Java中的......