【JAVA】文本处理(4)—文本处理中的字频统计(查询指定字词或统计全文字频)

一、前言

本次学习应用于文本处理方面,前面我们说到实现统计不同种类的字符频率,本次目的是为了实现查询指定字词或统计全文字频

在上一篇博客中我们讲到了正则表达式的实际应用

在这里我们将要与数据打交道,所以我们将要学习JAVA中的“容器”(其中的Map接口)。

二、分析学习(Map接口)

1)介绍和引入

现实生活中,我们经常需要成对存储某些信息。比如,我们使用的微信,一个手机号只能对应一个微信账户。这就是一种成对存储的关系。

Map就是用来存储“键(key)-值(value) 对”的。 Map类中存储的“键值对”通过键来标识,所以“键对象”不能重复。

Map 接口的实现类有HashMapTreeMapHashTableProperties等。

  • 常用方法: 121

2)特点和区别

HashTable类HashMap用法几乎一样,底层实现几乎一样,只不过HashTable的方法添加了synchronized关键字确保线程同步检查,效率较低

HashMap与HashTable的区别

  1. HashMap: 线程不安全,效率高。允许key或value为null。

  2. HashTable: 线程安全,效率低。不允许key或value为null。

TreeMap是红黑二叉树的典型实现。 TreeMap的put()/remove()方法大量使用了红黑树的理论。

TreeMap和HashMap实现了同样的接口Map,因此,用法对于调用者来说没有区别。HashMap效率于TreeMap;在需要排序的Map时才选用TreeMap

三、编程学习

1)任务要求

  • 完成一个 java application应用程序,实现文本文档的读取和写入,将修改后(查询指定字词或统计全文字频)的新内容存入到新的文本文档中。
  • 应用数据流的相关知识,使用BufferedReader/BufferedWriter处理流:将Reader/Writer对象进行包装,增加缓存功能,提高读写效率。使用InputStreamReader/OutputStreamWriter处理流:将字节流对象转化成字符流对象。
  • 应用JAVA“容器”中的HashMap的知识进行字频查询和统计

2)程序代码

/* 项目名称:Task_Shao
 * 创建时间:2019年2月21日
 * 创建者:Administrator_wz
 * 创建地点:kmust
 * 功能:文本处理中的特定字频统计(java 排序容器HashMap统计方法)
 */
import java.io.*;//导入java.io包中的所有类
import java.util.*;//导入java.util包中的所有类
import java.util.regex.Matcher;//导入java.util包中的Matcher类
import java.util.regex.Pattern;//导入java.util包中的Pattern类
public class character_frequency_statistics {
   //创建类名
	public static void main(String[] args) throws IOException {
   	//程序的主函数入口	
		long startTime=System.currentTimeMillis();//定义开始时间,用于统计程序的运行时长
		try{
   //用try-catch语句将逻辑语句包起来,并读取指定的文件
        	Scanner s1 = new Scanner(System.in);//获取键盘输入并赋值给s1字符串
        	System.out.println("请输入想要打开的文本文档:");//输入提示信息
        	String a = s1.nextLine();//定义字符串变量,并赋值为用户输入的信息
			InputStreamReader isr = new InputStreamReader(new FileInputStream(a),"utf-8"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值