直接看代码
有三个类,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
分享到:
相关推荐
要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。 存储结构使用线性表,分别用几个子函数实现相应...
利用python语言统计一篇文档中汉字的个数
Java实现(统计一段文字中每个字出现的次数)
统计文本中每个汉字出现次数,web简单程序。利用正则表达式等
统计一篇文章每个字的个数,java程序,程序能够把随意的一篇文章的每一个字包括标点符号在内的个数统计出来,并在一个文档中保存
文章汉字字数统计工具。 可统计一部作品中汉字个数(不重复),即一共使用了多少个不重复汉字(多音字亦视为重复)。 目前仅支持txt文本,使用时请转换为txt格式。
实现了用户输入一个字符串,能够输出该字符串包含多少字节。代码中分别统计出英文字母、数字、英文标点、中文、中文标点以及一些转义字符的个数。可以根据自己需要扩增范围
汉字使用频率统计表,共12041字,根据汉字的使用频率进行统计,用于字体切割打包
计算汉字笔画数,用java实现 计算汉字笔画数,用java实现
1. 给出前100个汉字高频字的频率统计结果; 2. 分别给出前1、20、100、600、2000、3000、6000汉字的字频总和; 3. 计算汉字的熵值; 4. 针对不同规模语料重复上述实验; 5. 以图表的形式表示上述结果; 6. 提交实验...
使用Java编程语言统计一个字符串中数字、汉字、字母和其他字符分别出现的次数。我们将通过以下步骤实现这个功能: 创建一个Java类,命名为CharacterStatistics。 在CharacterStatistics类中定义四个成员变量,分别...
该程序是一个java的中文汉字字频统计,从诸如txt文件中读取语料,然后生成一个前100个高频汉字的字频统计结果的txt文件,并且还会生成前100、200、600、2000、等汉字的字频和的另一个txt文件。该程序是借用treeMap来...
java实现中文排序,按数字字母汉字的顺序进行排序
1. 给出前100个汉字高频字的频率统计结果; 2. 分别给出前1、20、100、600、2000、3000汉字的字频总和; 3. 计算汉字的熵值;
该程序用于统计一个字符串中中英文、空格、数字和标点符号的个数。
可更改背景图片,可以统计使用次数,任务栏显示中文标题。第一次上传多指教。
通过正则表达式统计一个字符串中不同类型的个数,代买中附有简单的正则表达是的语法
资源名:运用图像处理计数对文字图片中的汉字进行识别,并统计图片中文字个数_matlab 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行...
对于给定的txt文本统计给定的汉字个数。
1. 给出前100个汉字高频字的频率统计结果; 2. 分别给出前1、20、100、600、2000、3000汉字的字频总和; 3. 计算汉字的熵值; 2)英文词频统计 1. 给出前100个高频单词的频率统计结果; 2. 分别给出前1、20、100、...