java 计算i 出现的次数_JAVA算法:按照给定的段落统计单词出现次数(JAVA代码)...

https://blog.csdn.net/seagal890/article/details/92067644

JAVA算法:按照给定的段落统计单词出现次数(JAVA代码)

写一个 JAVA程序以统计一个文本文件 words.txt 中每个单词出现的频率。

为了简单起见,你可以假设:

words.txt只包括小写字母和 ' ' 。

每个单词只由小写字母组成。

单词间由一个或多个空格字符分隔。

示例:

假设 words.txt 内容如下:

the day is sunny the the

the sunny is is

你的脚本应当输出(以词频降序排列):

the 4

is 3

sunny 2

day 1

说明:

不要担心词频相同的单词的排序问题,每个单词出现的频率都是唯一的。

算法设计

package com.bean.algorithm.basic;

import java.io.BufferedReader;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.StringTokenizer;

public class CountWords {

public static void main(String[] args) {

long startTime = System.currentTimeMillis(); // 获取开始时间

String string = "";

Map map = new HashMap();

try {

//读取文件

FileInputStream fis = new FileInputStream("G://CountWords.txt");

BufferedReader br = new BufferedReader(new InputStreamReader(fis));

String temp = "";

try {

while ((temp = br.readLine()) != null) {

string = string + temp;

}

} catch (IOException e) {

// TODO: handle exception

e.printStackTrace();

}

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

// 分割字符串

StringTokenizer st = new StringTokenizer(string); // 用于切分字符串

//初始化计数器

int count;

//初始化word变量

String word;

while (st.hasMoreTokens()) {

//逗号,问号,句号,感叹号,冒号,双引号,单引号,换行符号

word = st.nextToken(",?.!:\"\"' '\n");

if (map.containsKey(word)) {

// HashMap 保存数据

count = map.get(word);

//计数器累加

map.put(word, count + 1);

} else {

map.put(word, 1);

}

}

// 排序

Comparator> valueComparator = new Comparator>() {

public int compare(Map.Entry o1, Map.Entry o2) {

return o2.getValue() - o1.getValue();

}

};

// 输出结果

List> list = new ArrayList>(map.entrySet());

Collections.sort(list, valueComparator);

System.out.println("---------------------Words分析结果 ——— 输出结果----------");

for (Map.Entry entry : list) {

System.out.println(entry.getKey() + ":" + entry.getValue());

}

long endTime = System.currentTimeMillis(); // 获取结束时间

System.out.println("程序运行时间: " + (endTime - startTime) + "ms");

}

}

样例文本如下:

if you just want to try running findbugs against your own code, you can run findbugs using javawebstart. this will use our new gui under Java 1.5+ and our old gui under java 1.4. the new gui provides a number of new features, but requires java 1.5+. both use exactly the same analysis engine.

程序运行结果

---------------------Words分析结果 ——— 输出结果----------

new:3

1:3

gui:3

use:2

our:2

java:2

5+:2

you:2

the:2

findbugs:2

under:2

but:1

code:1

against:1

own:1

run:1

your:1

running:1

can:1

number:1

features:1

same:1

engine:1

and:1

provides:1

of:1

if:1

just:1

Java:1

a:1

using:1

will:1

old:1

want:1

this:1

exactly:1

analysis:1

both:1

4:1

javawebstart:1

try:1

to:1

requires:1

程序运行时间: 6ms

标签:段落,util,JAVA,java,word,单词,map,new,import

来源: https://blog.csdn.net/mrlin6688/article/details/100556510

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值