N个任务掌握java系列之统计一篇文章中单词出现的次数

问题:统计一篇文章中单词出现的次数

思路:

(1)将文章(一个字符串存储)按空格进行拆分(split)后,存储到一个字符串(单词)数组中。

(2)定义一个Map,key是字符串类型,保存单词;value是数字类型,保存该单词出现的次数。

(3)遍历(1)中得到的字符串数组,对于每一个单词,考察Map的key中是否出现过该单词,如果没出现过,map中增加一个元素,key为该单词,value为1(第一次出现);

如果,在map的key中发现了该单词,则通过key找到对应的value(单词出现的次数),将该value加1,再次保存回map。

(4)遍历(3)中得到的map,输出key(单词)及对应的value(次数)。

demo代码如下:

import java.util.HashMap;
import java.util.Iterator;

public class Has {
  // 统计单词出现的次数
    public static String StatList(String str) {
   StringBuffer sb = new StringBuffer();
   HashMap<String ,Integer> has = new HashMap<String ,Integer> (); // 打开一个哈希表
   String[] slist = str.split(" ");
   for (int i = 0; i < slist.length; i++) {
         if (!has.containsKey(slist[i])) { // 若尚无此单词
                 has.put(slist[i], 1);
         } else {//如果有,就在将次数加1
        	 	Integer nCounts = has.get(slist[i]);
                 has.put(slist[i],nCounts+1 );
        }
     }
//遍历map
     Iterator iterator = has.keySet().iterator();
      while(iterator.hasNext()){
             String word = (String) iterator.next();
             sb.append("单词:").append(word).append(" 次数").append(has.get(word)).append("\n");
      }
      return sb.toString();
}

public static void main(String[] args) {
        String s = new String("You are the mananger of an office supplies company. A colleague has received a letter compaining about an order for office furniture. She has left the letter for you to answer and has written some notes on it.");
        System.out.println(StatList(s));
}
}

  

时间: 2024-10-12 22:40:56

N个任务掌握java系列之统计一篇文章中单词出现的次数的相关文章

Python - 统计一篇文章中单词的频率

def frenquence_statistic(file_name): frequence = {} for line in open(file_name,'r').readlines(): words =line.strip().split(" ") for word in words: word = ''.join(list(filter(str.isalpha,word))).lower() if frequence.get(word) == None : frequence[

java怎么实现统计一个字符串中字符出现的次数

问题:假设字符串仅仅保护a-z 的字母,java怎么实现统计一个字符串中字符出现的次数?而且,如果压缩后的字符数不小于原始字符数,则返回. 处理逻辑:首先拆分字符串,以拆分出的字符为key,以字符出现次数为value,存入Map中. 源码如下: 1 import java.util.HashMap; 2 import java.util.Iterator; 3 import java.util.Map; 4 5 public class TestCompress { 6 7 public sta

Java统计一篇文章中每个字符出现的个数

大家可以参考下面代码,有什么疑问请留言... import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Col

字符串之“统计一个字符串中单词的个数”

题目:统计一个字符串中单词的个数 输入一行字符,统计其中有多少个单词,单词之间用空格分隔开 输入:my name is jacky 输出:the number of word is 4 代码如下: #include <stdio.h> int main(int argc, char *argv[]) { char str[80]; int i=0,num=0,flag=0; char c; gets(str); while((c=str[i])!='\0') { if(c==' ') flag

【ThinkingInC++】4、统计txt文本中单词的个数

其中要使用的txt文本! header defines classes for file IO, including ifstream, whose constructor takes a file name an argument. The expression f >> word extracts the next non-whitespace token from the file and returns the stream. When a stream appears in a bo

shell统计文本中单词的出现次数

Ubuntu14.04 给定一个文本,统计其中单词出现的次数 # solution 1 grep与awk配合使用,写成一个sh脚本 fre.sh sh fre.sh wordfretest.txt #! /bin/bash# solution 1 if [ $# -eq 0 ] then echo "Usage:$0 args error" exit 0 fi if [ $# -ge 2 ] then echo "analyse the first file $1"

统计文章内各个单词出现的次数

算法的思路是: 从头到尾遍历文件,从文件中读取遍历到的每一个单词. 把遍历到的单词放到hash_map中,并统计这个单词出现的次数. 遍历hash_map,将遍历到的单词的出现次数放到优先级队列中. 当优先级队列的元素个数超过k个时就把元素级别最低的那个元素从队列中取出,这样始终保持队列的元素是k个. 遍历完hash_map,则队列中就剩下了出现次数最多的那k个元素. 具体实现和结果如下: // 出现次数最多的K个单词.cpp : Defines the entry point for the

Java系列: 如何在Eclipse中安装Memory Analyzer插件

一.找到eclipse的插件安装对话框: help->install new software ->work with 二.输入Memory Analyzer的安装路径 具体可以到http://www.eclipse.org/mat/downloads.php 去找 我安装的时候的版本是1.6.1,如下 三.开始安装     null

统计文档中单词出现频率

一.先贴出自己的代码 1 import java.io.BufferedReader; 2 import java.io.File; 3 import java.io.FileReader; 4 import java.io.IOException; 5 import java.util.Arrays; 6 import java.util.HashMap; 7 import java.util.Iterator; 8 import java.util.Map; 9 import java.ut