`

统计文章使用的汉字数并且计算出每个字重复使用的次数

 
阅读更多
直接看代码

有三个类,ChineseEntity汉字的对象包括汉字和每个汉字的重复次数,MyComparator为了数组的排序 Test111 这个是主类

先看主类Test111
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Test111 {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		Map<String, String> chineseMap = new HashMap<String, String>();
		ArrayList<ChineseEntity> arrayList = new ArrayList<ChineseEntity>();
		String filePath = "/Users/alecyan/Downloads/37a60a51236722724f8e863791988205/[历史]《历史是个什么玩意儿》1.2.3.txt";
		File file = new File(filePath);
		BufferedInputStream fis = new BufferedInputStream(new FileInputStream(
				file));
		BufferedReader reader = new BufferedReader(new InputStreamReader(fis,
				"gb2312"), 5 * 1024 * 1024);
		String line = null;

		while ((line = reader.readLine()) != null) {
			for (int i = 0; i < line.length(); i++) {
				int chr1 = (char) line.charAt(i);
				if (chr1 >= 19968 && chr1 <= 171941) {// 汉字范围 \u4e00-\u9fa5 (中文)
					String newStr = Character.toString(line.charAt(i));
					String value = chineseMap.get(newStr);
					if (value == null) {
						chineseMap.put(newStr, "1");
					} else {
						int iCount = Integer.parseInt(value);
						iCount = iCount + 1;
						chineseMap.put(newStr, new Integer(iCount).toString());
					}
				}
			}
		}
		Set<String> keySet = chineseMap.keySet();
		if (keySet != null && keySet.size() > 0) {
			for (String key : keySet) {
				if (chineseMap.get(key) != null) {
					int iCount = Integer.parseInt(chineseMap.get(key));
					ChineseEntity chineseEntity = new ChineseEntity();
					chineseEntity.setChineseStr(key);
					chineseEntity.setiCount(iCount);
					arrayList.add(chineseEntity);
				}
			}
		}
		Object[] chineseEntityArray = arrayList.toArray();
		java.util.Arrays.sort(chineseEntityArray, new MyComparator());
		if (chineseEntityArray != null && chineseEntityArray.length > 0) {
			System.out.println("total chinese character:" + chineseEntityArray.length);
			for (int i = 0; i < chineseEntityArray.length; i++) {
				ChineseEntity chineseEntity = (ChineseEntity) chineseEntityArray[i];
				System.out.println(chineseEntity.getChineseStr() + "---重复次数---"
						+ chineseEntity.getiCount());
			}
		}
	}
}



类ChineseEntity
public class ChineseEntity{
	private String chineseStr;
	private int iCount;
	public String getChineseStr() {
		return chineseStr;
	}
	public void setChineseStr(String chineseStr) {
		this.chineseStr = chineseStr;
	}
	public int getiCount() {
		return iCount;
	}
	public void setiCount(int iCount) {
		this.iCount = iCount;
	}
}

类MyComparator
import java.util.Comparator;

public class MyComparator implements Comparator<Object> {
	public int compare(Object obj1, Object obj2) {
		ChineseEntity u1 = (ChineseEntity) obj1;
		ChineseEntity u2 = (ChineseEntity) obj2;
		if (u1.getiCount() > u2.getiCount()) {
			return -1;
		} else if (u1.getiCount() < u2.getiCount()) {
			return 1;
		} else {
			// 利用String自身的排序方法。
			// 如果使用次数相同就按字符串进行排序
			return u1.getChineseStr().compareTo(u2.getChineseStr());
		}

	}
}


这里我们统计了一本电子书,下面是运行的部分结果
total chinese character:3485
,---重复次数---18034
的---重复次数---7939
是---重复次数---5017
一---重复次数---3663
了---重复次数---3656
不---重复次数---3198
国---重复次数---3072
就---重复次数---2710
人---重复次数---2632
这---重复次数---2325
个---重复次数---2295
有---重复次数---1954
大---重复次数---1720
上---重复次数---1699
中---重复次数---1693
他---重复次数---1685
在---重复次数---1581
你---重复次数---1580
来---重复次数---1481
以---重复次数---1402
我---重复次数---1370
都---重复次数---1360
为---重复次数---1356
后---重复次数---1224
子---重复次数---1145
天---重复次数---1124
朝---重复次数---1102
时---重复次数---1066
么---重复次数---1041
到---重复次数---1034
说---重复次数---1018
地---重复次数---1004
0
3
分享到:
评论
1 楼 hanmiao 2013-08-31  
這里不僅僅是統計了漢字出現的次數,也統計了全角字符的統計次數,另外,GB2312的字符集比GB18030的字符集要小壹些,不知道直接把字符編碼調整成GB18030這段代碼是否還能正常工作?

相关推荐

    输入一页文字,程序可以统计出文字、数字、空格的个数。

    4. **字符串匹配**:统计特定字符串在文章中的出现次数,可以使用滑动窗口或者KMP算法等字符串匹配方法。这里可以简单地通过遍历文本,每次比较字符串长度的字符是否相同来实现。 5. **字符串删除**:删除某子串后...

    统计字符串中每个字符出现次数并排序工具

    本文将介绍一种专门用于统计字符串中每个字符出现次数并进行排序的工具,它能够帮助用户快速了解一段文本的主要构成元素,找出最频繁出现的字符。 标题中的"统计字符串中每个字符出现次数并排序工具"是一个实用的...

    python统计汉字个数

    利用python语言统计一篇文档中汉字的个数

    统计字符串中汉字、字母、数字、英文标点、中文标点个数

    标题提到的"统计字符串中汉字、字母、数字、英文标点、中文标点个数"是一个典型的字符串分析问题,它涉及到对输入字符串进行逐个字符检查,识别并计数不同类型的字符。这个问题可以通过多种编程语言来解决,例如...

    汉字字频统计 哈工大-中文信息处理实验一实验报告

    对比6000万字和1.5亿字语料的实验结果,发现随着语料规模增加,字频统计结果更加准确,反映出更广泛的汉字使用情况。 图表形式: 利用图表展示字频统计结果,例如条形图、直方图等,清晰地表现各层次汉字的使用频率...

    C#统计txt文本中每个汉字出现次数

    本项目专注于使用C#编程语言来实现一个简单的Web程序,其功能是统计一个TXT文本文件中每个汉字出现的次数。这个功能对于理解文本内容、进行语言分析或者数据挖掘都有着重要的作用。下面将详细阐述如何实现这一功能,...

    计算汉字笔画数java实现

    在Java中实现计算汉字笔画数的功能,主要涉及到对汉字编码的理解以及如何根据特定的规则来确定每个汉字对应的笔画数。在本例中,使用的是一种基于GB2312编码标准的方法,该标准是中华人民共和国国家标准之一,用于...

    python统计字符串中中英文、空格、数字、标点个数

    对于统计任务,我们可以遍历字符串的每个字符,然后通过条件判断来确定其类型。 1. **检查字符类型**: Python提供了内置的`isalpha()`、`isdigit()`、`isspace()`和`ispunct()`方法,它们可以用来检测字符是否为...

    字频计算统计

    字频统计是指对一段文本或一系列文件中每个汉字出现次数的统计,这种统计对于理解文本的主题、特征提取、关键词抽取以及语言模型的建立等具有重要意义。 在“字频计算统计”这个小程序中,用户可以方便地进行字频...

    Android统计EditText的字母数字以及汉字的统计方法

    在Android开发中,有时我们需要对用户在EditText控件中输入的内容进行统计,比如统计字母、数字和汉字的数量,以便实现特定的功能,如密码强度验证、输入格式检查等。本篇文章将详细探讨如何实现这一功能。 首先,...

    统计一篇文章每个字的个数

    统计一篇文章每个字的个数,java程序,程序能够把随意的一篇文章的每一个字包括标点符号在内的个数统计出来,并在一个文档中保存

    统计文本中汉字个数

    在编程领域,统计文本中汉字个数是一项常见的任务,尤其在自然语言处理和数据分析中有着广泛应用。本项目中,我们将使用C++这一高效且广泛使用的编程语言来实现这个功能。C++虽然通常被认为更适合系统级编程和高性能...

    汉字字数统计(不重复).rar

    文章汉字字数统计工具。 可统计一部作品中汉字个数(不重复),即一共使用了多少个不重复汉字(多音字亦视为重复)。 目前仅支持txt文本,使用时请转换为txt格式。

    计算更换背景和使用次数统计

    "计算更换背景和使用次数统计"这个标题暗示我们正在讨论一个计算器应用,它具备自定义背景图片和使用统计的功能。下面我们将详细探讨这两个核心知识点。 首先,**自定义背景图片**是提升用户体验的一个常见手段。在...

    java版中文汉字字频统计

    该程序是一个java的中文汉字字频统计,从诸如txt文件中读取语料,然后生成一个前100个高频汉字的字频统计结果的txt文件,并且还会生成前100、200、600、2000、等汉字的字频和的另一个txt文件。该程序是借用treeMap来...

    汉字单字字频总表(汉字使用频率统计表)

    汉字使用频率统计表,共12041字,根据汉字的使用频率进行统计,用于字体切割打包

    统计字符串中数字、汉字、字母、其他字符对应的个数

    使用Java编程语言统计一个字符串中数字、汉字、字母和其他字符分别出现的次数。我们将通过以下步骤实现这个功能: 创建一个Java类,命名为CharacterStatistics。 在CharacterStatistics类中定义四个成员变量,分别...

    6763字频表(清华大学统计)

    《6763字频表(清华大学统计)》是一份基于大量文本数据统计得出的汉字使用频率列表,由清华大学进行统计整理。这份字频表不仅对语言学家、文字编码专家具有重要的参考价值,对于计算机科学领域的开发者来说也是一个...

    python查询笔画数(含汉字编码表)

    这种数据库通常会列出每个汉字及其对应的笔画数。在Python中,我们可以创建一个字典来存储这些信息,然后通过字典查询来获取笔画数。例如,如果数据库文件是CSV格式,可以使用`pandas`库来处理: ```python import ...

    统计一篇文章中每个单词的个数

    本文将深入探讨如何使用编程技术统计一篇文章中每个单词的个数,这通常涉及文本预处理、字符串操作和词频统计等概念。 首先,我们需要一个小程序来读取文章内容。这个"Statistical words.exe"很可能就是这样一个...

Global site tag (gtag.js) - Google Analytics