码迷,mamicode.com
首页 > 其他好文 > 详细

英语文章单词统计程序思路

时间:2018-10-12 01:26:50      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:str   tail   cep   打开   ring   log   插入   more   就是   

主要思路:文件读入文章,用HashMap 来存放出现的单词的次数,Key 是要统计的单词,Value 是单词出现的次数。最后再按照 Key 的升序排列出来。

{

HashMap:

 数组:采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,需要遍历数组,逐一比对给定关键字和数组元素,时间复杂度为O(n),当然,对于有序数组,则可采用二分查找,插值查找,斐波那契查找等方式,可将查找复杂度提高为O(logn);对于一般的插入删除操作,涉及到数组元素的移动,其平均复杂度也为O(n)

 线性链表:对于链表的新增,删除等操作(在找到指定操作位置后),仅需处理结点间的引用即可,时间复杂度为O(1),而查找操作需要遍历链表逐一进行比对,复杂度为O(n)

 二叉树:对一棵相对平衡的有序二叉树,对其进行插入,查找,删除等操作,平均复杂度均为O(logn)。

 哈希表:相比上述几种数据结构,在哈希表中进行添加,删除,查找等操作,性能十分之高,不考虑哈希冲突的情况下,仅需一次定位即可完成,时间复杂度为O(1),接下来我们就来看看哈希表是如何实现达到惊艳的常数阶O(1)的。

  我们知道,数据结构的物理存储结构只有两种:顺序存储结构链式存储结构(像栈,队列,树,图等是从逻辑结构去抽象的,映射到内存中,也这两种物理组织形式),而在上面我们提到过,在数组中根据下标查找某个元素,一次定位就可以达到,哈希表利用了这种特性,哈希表的主干就是数组

  比如我们要新增或查找某个元素,我们通过把当前元素的关键字 通过某个函数映射到数组中的某个位置,通过数组下标一次定位就可完成操作。

        存储位置 = f(关键字)

  其中,这个函数f一般称为哈希函数,这个函数的设计好坏会直接影响到哈希表的优劣。

摘自---作者: dreamcatcher-cx

出处: <http://www.cnblogs.com/chengxiao/>

}

{

程序:

import java.util.*;
import java.io.*;
 public class CountOccurrenceOfWords {
     public static void main(String[] args) throws Exception {
        Map hashMap = null;
        BufferedReader infile = null;
        StringTokenizer st = null;
        String filename = "Test.txt";
        String string;
        String file = null;
        //打开一篇文章,名字是 Test.txt .       

        infile = new BufferedReader(new FileReader(filename));
        while ((string = infile.readLine()) != null) {
            file += string;  //都出整篇文章,存入String中         }
         hashMap = new HashMap();
                // 取出文章中的单词,"," "." "!" " " 为各个单词的分界符   

         st = new StringTokenizer(file, " ,.!");
         while (st.hasMoreTokens()) {
            String key = st.nextToken();
            if (hashMap.get(key) != null) {
                int value = ((Integer) hashMap.get(key)).intValue();
                value++;
                hashMap.put(key, new Integer(value));
             } else {
                hashMap.put(key, new Integer(1));
            }
        }
                //按照单词的字母次序输出。       

        Map treeMap = new TreeMap(hashMap);
        Set entrySet = treeMap.entrySet();
         Iterator iterator = entrySet.iterator();
         while (iterator.hasNext()) {
             System.out.println(iterator.next());
        }
     }
 }
摘自   --------------------

作者:wangtongxiao
来源:CSDN
原文:https://blog.csdn.net/wangtongxiao/article/details/1646630?utm_source=copy

}

 

英语文章单词统计程序思路

标签:str   tail   cep   打开   ring   log   插入   more   就是   

原文地址:https://www.cnblogs.com/sengzhao666/p/9775848.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!