词频统计程序(Java)

题目描述:

       做一个词频统计程序,该程序具有以下功能:
        基本要求:
     (1)可导入任意英文文本文件
     (2)统计该英文文件中单词数和各单词出现的频率(次数),并能将单词按字典顺序输出。
     (3)将单词及频率写入文件。

提高要求:

(4)将单词及频率写入数据库。

具体实现代码如下(不包括DAO部分):

package com._520it._chapter02;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;import com._520it._chapter02.dao.IWordDAO;
import com._520it._chapter02.dao.impl.WordDAOImpl;
import com._520it._chapter02.domain.Word;/*** 词频统计程序* @author Jack* @date 2018-09-21* @version 1.0*/
public class WordCounts {public static void main(String[] args) {// 从文件中读取数据,并存入List集合中List<String> list = readFromFile();String str = list.get(0);str.replaceAll(",", "");str.replaceAll(".", "");String[] words = str.split(" ");// 将单词全部转换为小写for (int i = 0; i < words.length; i++) {words[i] = words[i].toLowerCase();}// 将单词按照字典排序words = sortWords(words);// 将结果放入Map集合中Map<String, Integer> map = new HashMap<>();for (int i = 0; i < words.length; i++) {if (!map.containsKey(words[i])) {map.put(words[i], 1);} else {int num = map.get(words[i]) + 1;map.put(words[i], num);}}// 将结果写入文件writeToFile(map);Iterator<String> iterator = map.keySet().iterator();IWordDAO dao = new WordDAOImpl();while (iterator.hasNext()) {Word w = new Word();String word = (String) iterator.next();w.setWord(word);w.setCount(map.get(word).longValue());// 将结果写入数据库dao.save(w);}}/*** 从文件中读取数据* @return 存有数据的List集合*/private static List<String> readFromFile() {// 表示读取的行String line = null;List<String> list = new ArrayList<>();try {// 创建字符输入流对象FileReader srcFile = new FileReader("resources/data.txt");// 字符缓冲输入流BufferedReader in = new BufferedReader(srcFile);while ((line = in.readLine()) != null) {// 将数据存储到list集合中list.add(line);}// 关闭资源in.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return list;}/*** 将结果写入文件* @param map Map集合*/private static void writeToFile(Map<String, Integer> map) {try {// 创建字符输出流对象FileWriter desFile = new FileWriter("resources/result.txt", true);// 字符缓冲输出流BufferedWriter out = new BufferedWriter(desFile);Iterator<String> iterator = map.keySet().iterator();while (iterator.hasNext()) {String word = (String) iterator.next();out.write(word + " : " + map.get(word));// 输出换行out.newLine();}// 关闭资源out.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}/*** 将字符串数组按照字典排序* @param str 需要排序的数组* @return 排序后的字符串数组*/private static String[] sortWords(String[] str) {for (int i = 0; i < str.length - 1; i++) {for (int j = 0; j < str.length - 1 - i; j++) {if ((str[j].compareTo(str[j + 1])) > 0) {String temp = str[j];str[j] = str[j + 1];str[j + 1] = temp;}}}return str;}
}

Java:词频统计程序相关推荐

  1. java词频统计——web版支持

    需求概要: 1.把程序迁移到web平台,通过用户上传TXT的方式接收文件. 2.用户直接输入要统计的文本,服务器返回结果 3.在页面上给出链接 (如果有封皮.作者.字数.页数等信息更佳)或表格,展示经 ...

  2. java词频统计简单带代码_简单的词频统计代码实现(PDF格式)

    周末抽空帮同学论文写了一段统计词频的代码,做个简单总结.出于职业病,代码使用Springboot+Maven搭建,面向抽象编程,并通过web请求控制执行. 依赖配置 org.springframewo ...

  3. Java词频统计总结

    思路: 1.先对它进行分片 2.对它根据分片位置进行词频统计 3.对结果进行合并 所用的一些方法: 1.在分片的过程中,解决分片的位置在句子中间的问题: try (RandomAccessFile r ...

  4. java 词频_java程序:统计单词词频,

    用java统计英文文章单词词频,源码如下:问题:输出时不要按键输出,要按键值从大到小输出.键值相同时按键从大到小排序(比如:any=3,an=3时,输出顺序为:an=3any=3).比如:原来输... ...

  5. Python英文词频统计(哈姆雷特)程序示例

    今天继续给大家介绍Python相关知识,本文主要内容是Python英文词频统计程序示例,主要是对英文文本--<哈姆雷特>进行分词. 一.英文文本词频统计思路 想要对<哈姆雷特> ...

  6. 个人和结对项目 - 英语单词词频统计

    个人或结对编程项目 英语单词词频统计程序 (最新版本在这里) 实现一个命令行程序,支持几种模式下的单词词频统计 Implement a console application to tally the ...

  7. Mapreduce入门--词频统计

    前言 本篇博客内容:使用Hadoop提供给Java的依赖和接口轻松实现Mapreduce词频统计程序的入门. 工具:IDEA 需求:统计<yxp>这首诗中每个单词和符号出现的次数 诗的内容 ...

  8. Flink学习3-WordCount词频统计

    基于Flink开发环境,接下来我们将完成Flink版本的词频统计程序,主要内容如下: 需求描述 功能设计 功能开发 需求升级 针对以上几个步骤,下面将详细展开,读者可根据自身情况有选择阅读. 1. 需 ...

  9. Hadoop词频统计

    这里写自定义目录标题 前提 制作JAR包 启动Hadoop 将wordfile1.txt上传到HDFS 重新上传文件进行词频统计和注意事项 HDFS常用命令 ​ 前提 1.安装了Linux系统,并且安 ...

最新文章

  1. 网络编程 UDP通信的过程 TCP通信过程 多线程文件上传
  2. php函数get_magic_quotes_gpc详解
  3. WPF快速入门系列(8)——MVVM快速入门
  4. tomcat架构分析 (connector NIO 实现)【转】
  5. Java使用BTrace动态替换线上class文件
  6. JavaWeb学习总结(四十九)——简单模拟Sping MVC
  7. 腾达W303R v3 无线路由器使用移动光纤无法打开视频的设置方法
  8. 前端必知必会--JSON.stringify()犀利的第三个参数
  9. 系统分析师通过率_软考5个高级难度最小的是哪个?哪个通过率高一些?
  10. java购物车商品排序_Java购物车
  11. python chardet_Python - chardet
  12. 数据集:102 flower、Cratech256、ImageNet数据集下载
  13. web 前端面试题50道
  14. easy_ui之搭建后台界面(一)
  15. Java基础-子类和父类之间的诡异事件
  16. pearlovell
  17. oracle11g磁盘阵列 pdf,融会贯通 从Oracle11g到SQL Server2008 中文PDF版 16.7MB
  18. 《数据分析思维》:分析方法与业务知识
  19. ecshop小京东的模板切换到smarty3.1.3之去掉原生的php语法
  20. 【stm32f407】时钟树以及SystemInit剖析

热门文章

  1. i can sayABC(2006-7-13)
  2. java.util.ConcurrentModificationException详解
  3. 有向无环图——AOV网(拓扑排序)
  4. 设计模式的思考(四)
  5. Java线程锁(一)
  6. C# 线程锁和单多线程简单使用
  7. 机器学习笔记(4.1)
  8. 微信门店小程序怎样创建?门店小程序创建方法简介
  9. matplotlib知识点总结
  10. matchesSelector 匹配选择器表达式sizzle的实现