Java的TreeMap统计单词数量

使用TreeMap统计单词个数,并输出单词和书目,单词按升序排列

TreeMap的特点是无重复元素,且元素的key值既可以按默认的Comparable接口排序也可以按Comparator比较器排序,为TreeMap设计一个比较器,此比较器要实现Comparator接口

//可以扩展到从文件中或者从控制台输入单词,来统计,只需要加入流就行了
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class CountWords {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
      String text="Hello,Good morning.Have a good day!"+"oh,Thank you.Have a good visit!";
      TreeMap<String,Integer> treemap=new TreeMap<String,Integer>();
      String[] str=text.split("[,.! ]");
      for(int i=0;i<str.length;i++){
          String key=str[i].toLowerCase();
          if(key.length()>0){
              if(!treemap.containsKey(key)){
              treemap.put(key, 1);//如果map里面没有,就放入
          }
          else{
             int value=treemap.get(key).intValue();
             value++;
             treemap.put(key, value); // 如果有此单词,值加1
          }
          }
      }
     Set<Map.Entry<String, Integer>> set=treemap.entrySet();//返回treemap里的条目规则集
     for(Map.Entry<String, Integer> e:set){
         System.out.println(e.getKey()+"\t"+e.getValue());
     }
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-29 21:04:50

Java的TreeMap统计单词数量的相关文章

go语言小练习——给定英语文章统计单词数量

给定一篇英语文章,要求统计出所有单词的个数,并按一定次序输出.思路是利用go语言的map类型,以每个单词作为关键字存储数量信息,代码实现如下: 1 package main 2 3 import ( 4 "fmt" 5 "sort" 6 ) 7 8 func wordCounterV1(str string) { 9 /*定义变量*/ 10 stringSlice := str[:] 11 temp := str[:] 12 wordStatistic := mak

hadoop-mapreduce-(1)-统计单词数量

编写map程序 package com.cvicse.ump.hadoop.mapreduce.map; import java.io.IOException; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; public cl

Storm监控文件夹变化 统计文件单词数量

监控指定文件夹,读取文件(新文件动态读取)里的内容,统计单词的数量. FileSpout.java,监控文件夹,读取新文件内容 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65

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

问题:统计一篇文章中单词出现的次数 思路: (1)将文章(一个字符串存储)按空格进行拆分(split)后,存储到一个字符串(单词)数组中. (2)定义一个Map,key是字符串类型,保存单词:value是数字类型,保存该单词出现的次数. (3)遍历(1)中得到的字符串数组,对于每一个单词,考察Map的key中是否出现过该单词,如果没出现过,map中增加一个元素,key为该单词,value为1(第一次出现): 如果,在map的key中发现了该单词,则通过key找到对应的value(单词出现的次数)

kwic--Java统计单词个数并按照顺序输出

2016-07-02(随笔写作时间) 写了好久的程序了为了避免以后用到.......... 是一个统计单词个数,并按照个数从大到小输出的.输入文件名OK 了 单词是按照首字母排序的,,,里面用到映射等,,,注意重写比较函数,因为我们是要按值排序,而不是一般的按照键排序,,,,我们要输出的由多到少的个数,,,有个数是重复的 if (base.get(a) >=base.get(b)) { return -1; //注意 不要返回0 会删除重复 } 就起到了关键作用. 由于我们要按照个数多少排序,所

统计单词频率

今天老师又安排了一个任务:统计一个文件中出现最多的几个单词出现的频率. 怎么说呢,还是一点不会,只能上网搜,通过两小时的奋斗,我还是没能做出来,但是我知道了如何从读取文件中的信息的代码以及如何统计单词频率的代码:然而,我无法把他们合起来,也无法理解许多代码的作用,就只知道其功能,所以我想,我还是该再去借一本书随身背着,然后就是多花时间学习java了. 今晚又经过三个多小时,又搜了搜想了想,还把一些相似的代码进行对照,然而我还是无法改动代码分毫,我觉得我很无能,感觉三个多小时是白搭了,一事无成,也

第六章第一个Linux驱动程序:统计单词个数

第六章介绍如何在多种平台,使用多种方法测试Linux驱动. 本章主讲统计单词个数的算法的实现技术:Linux驱动.统计单词个数的功能是封装在Linux驱动中的.驱动不一定是直接和硬件打交道的,还可以喝普通的library一样提供其他程序的调用来实现特定功能的. 第一节Linux驱动到底是个什么东西 Linux驱动和普通的Linux API没有本质上的区别,只是使用Linux驱动的方式和使用Linux API的方法不同. Linux系统将每一个驱动都映射成一个文件,这些文件称为设备文件或驱动文件,

统计单词个数案例

Linux系统将每一个驱动都映射成一个文件.这些文件称为设备文件或驱动文件,都保存在/dev目录中.编写linux驱动最重要的一步就是编写回调函数,否则与设备文件交互的数据无法得到处理. 1. 编写linux驱动程序的步骤: 第 1 步:建立 Linu x 驱动骨架 (装载和卸载 Linu x 驱动): Linux 内核在使用驱动时首先需要装载驱动.当 Linux系统退出时需要卸载 Linux 驱动,在卸载的过程中需要释放由 linux 驱动占用的资源,例如,删除设备文件.释放内存地址空间等.在

LeetCode:Count Primes - 统计质数数量

1.题目名称 Count Primes(统计质数数量) 2.题目地址 https://leetcode.com/problems/count-primes/ 3.题目内容 英文:Count the number of prime numbers less than a non-negative number, n. 中文:统计正整数n以内(不含n本身)质数的数量 4.一个TLE的方法 从1到n,考察每个数字是否为质数.这个方法由于花费时间较长,不能满足题目中对时间的要求. 一段实现此方法的Jav