读取JDK API文档,并根据单词出现频率排序
1,拿到 API 文档
登录 https://docs.oracle.com/javase/8/docs/api/ ,
选中特定的类,然后 copy 其中的内容,

放入 TXT 文件中 ,

2,读取TXT内容,并排序
package com.lgx.test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
public class ReadVectorAPI {
public static String filename = "src/Vector.txt";
public static StringBuffer sb = null;
public static void main(String[] args) {
try {
//根据单词字母排序
countWordOrderByWord();
//根据单词频率排序
countWordOrderByCount();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
// 计算单词的出现次数,依据单词排序
public static void countWordOrderByWord() throws FileNotFoundException {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(new File(filename)));
String inputLine = null;
TreeMap<String, Integer> map = new TreeMap<String, Integer>();
while ((inputLine = br.readLine()) != null) {
String[] words = inputLine.split("[ \n\t\r.,;:!?(){}]");
for (int i = 0; i < words.length; i++) {
String key = words[i].toLowerCase();
if (key.length() > 0) {
if (map.get(key) == null) {
map.put(key, 1);
} else {
int times = map.get(key).intValue();
times++;
map.put(key, times);
}
}
}
}
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
System.out.println("=====根据单词字母排序=====");
for (Map.Entry<String, Integer> entry : entrySet) {
System.out.println(entry.getKey() + " 在API文档中出现了 " + entry.getValue() + " 次");
}
} catch (IOException e) {
e.printStackTrace();
}
}
// 计算单词的出现次数,依据次数排序
public static void countWordOrderByCount() throws FileNotFoundException {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(new File(filename)));
String inputLine = null;
TreeMap<String, Integer> map = new TreeMap<String, Integer>();
while ((inputLine = br.readLine()) != null) {
String[] words = inputLine.split("[ \n\t\r.,;:!?(){}]");
for (int i = 0; i < words.length; i++) {
String key = words[i].toLowerCase();
if (key.length() > 0) {
if (map.get(key) == null) {
map.put(key, 1);
} else {
int times = map.get(key).intValue();
times++;
map.put(key, times);
}
}
}
}
List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
System.out.println("=====根据单词频率排序=====");
for (Map.Entry<String, Integer> mapping : list) {
System.out.println(mapping.getKey() + " 在API文档中出现了 " + mapping.getValue() + " 次");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
输出结果前部分截图为;

读取JDK API文档,并根据单词出现频率排序的更多相关文章
- 所谓的规范以及JDK api文档的重要性
所谓的规范,就是在jee api 文档里对应的接口. 可以从jdk文档和jee文档的目录结构,接口中获取对整个编程范围的把握
- JDK API文档下载
java SE 8 API文档:http://www.oracle.com/technetwork/java/javase/documentation/jdk8-doc-downloads-21331 ...
- JDK API文档中,<E>、<T>、<?>分别代表什么意思?
Type ParameterConventionsYou have already seen the angle bracketand single letter notation used tore ...
- JDK API文档_1.6.0 中文版
链接:https://pan.baidu.com/s/1b0inUgYvEfjeusa3z_2p-g 密码:f8jk
- (转载)中文Appium API 文档
该文档是Testerhome官方翻译的源地址:https://github.com/appium/appium/tree/master/docs/cn官方网站上的:http://appium.io/s ...
- 中文Appium API 文档
该文档是Testerhome官方翻译的源地址:https://github.com/appium/appium/tree/master/docs/cn官方网站上的:http://appium.io/s ...
- Day01:API文档 / 字符串基本操作
JDK API 什么是JDK API? JDK中包含大量的API类库,所谓AP就是一些写好的,可提供直接调用的功能(在Java语言中,这些功能以类的形式封装). JDK API包含的类库功能强大,经常 ...
- API文档自动生成,Swagger的配置
ASP.NET的部署方式 第一步:引用程序集 打开NuGet程序包管理器,搜索Swagger,安装第一个,注意画圈的地方, 已经包含主程序和UI了,安装完成后会在根目录App_Start文件夹下生成S ...
- 如何使 WebAPI 自动生成漂亮又实用在线API文档
1.前言 1.1 SwaggerUI SwaggerUI 是一个简单的Restful API 测试和文档工具.简单.漂亮.易用(官方demo).通过读取JSON 配置显示API. 项目本身仅仅也只依赖 ...
随机推荐
- vue element NavMenu 莫名出现蓝色边框
最近在开发一款官网,使用的是element,在头菜单NavMenu,的时候没有设置任何的边框属性,结果出现了如下图所示的边框线. 点击有二级菜单时出现 找了好多方法发现是有一个属性影响到了,:focu ...
- 如何使用Swagger为.NET Core 3.0应用添加JWT授权说明文档
简介 本教程采用WHY-WHAT-HOW黄金圈思维模式编写,黄金圈法则强调的是从WHY为什么学,到WHAT学到什么,再到HOW如何学.从模糊到清晰的学习模式.大家的时间都很宝贵,我们做事前先想清楚为什 ...
- 斯坦福机器学习课程 Exercise 习题二
Exercise 2: Linear Regression 话说LaTex用起来好爽 Matlab代码 迭代并且画出拟合曲线 Linear regression 公式如下 hθ(x)=θTx=∑i=0 ...
- The value for the useBean class attribute is invalied
JSP: The value for the useBean class attribute XXX is ...
- Redis5源码解析-Sentinel
简单的概念就不解释.基于Redis5.0.5 从Sentinel主函数触发 在sentinel.c文件的最后面可以发现sentinelTimer函数,这个就是Sentinel的主函数,sentinel ...
- 又到了卸载Notepad++的时候了?
逛开源中国(OSCHINA),无意中发现一贴<不用Notepad++,你还有这些更好的选择> 才发现,原来 Notepad++ 的作者侯今吾前几天又在 npp 的官网上发表了一篇个人政治意 ...
- kaldi中CD-DNN-HMM网络参数更新公式手写推导
在基于DNN-HMM的语音识别中,DNN的作用跟GMM是一样的,即它是取代GMM的,具体作用是算特征值对每个三音素状态的概率,算出来哪个最大这个特征值就对应哪个状态.只不过以前是用GMM算的,现在用D ...
- linux centos ubutun svn搭建
1.卸载SVN 查看自己是否安装了svn svn 上图显示已安装,可用以下命令进行卸载 sudo apt-get remove --purge subversion (–purge 选项表示彻底删除改 ...
- 创建WebApi
一.创建 Web 项目 使用vs创建项目,选择“ASP.NET Core Web 应用程序”模板,将项目命名为 TodoApi,然后单击“确定”. 在“新建 ASP.NET Core Web 应用程序 ...
- Flask:对项目文件进行拆分
在工作中,我们不可能将ORM的配置,ORM的操作,ORM的使用以及视图放到同一个文件里,大多数时候Flask都是按照MVC的设计理念进行部署的 1.MVC和MTV (1)MVC(Model-View- ...