wordcount优化

1.小组项目地址:

 https://github.com/ahhahahh/WCPro (部分代码借用软工1504成建伟的代码)
 

2.PSP表格:

PSP2.1

PSP阶段

预估耗时

(分钟)

实际耗时

(分钟)

Planning

计划

 20 20

·   Estimate

·   估计这个任务需要多少时间

 20 20

Development

开发

 390 460

·   Analysis

·   需求分析 (包括学习新技术)

  25 35

·   Design Spec

·   生成设计文档

 1015 

·   Design Review

·   设计复审 (和同事审核设计文档)

 15 20

·   Coding Standard

·   代码规范 (为目前的开发制定合适的规范)

 10 5

·   Design

·   具体设计

 30 35

·   Coding

·   具体编码

220 240

·   Code Review

·   代码复审

 20 30

·   Test

·   测试(自我测试,修改代码,提交修改)

 60 80

Reporting

报告

 45 50

·   Test Report

·   测试报告

25  25

·   Size Measurement

·   计算工作量

 10 10

·   Postmortem & Process Improvement Plan

·   事后总结, 并提出过程改进计划

 10 15
 

合计

 435 510

3.接口设计和实现

小组把项目wordcount优化的任务划分为:

1.main函数编写,判断并处理命令行参数
2.统计文件内单词和词频,定义模块接口
3.单词与词频的排序
4.将排序后的单词与词频输出到文件

其中我负责单词与词频的排序,具体实现的功能是根据词频大小进行降序排列,取词频最高的前100个单词。对于单词词频相同的单词,按照单词所包含的每个字母从a到z的次序依次排列。使用arraylist对词频和单词进行存放。

// 词频排序

    public static ArrayList<String> sortList(HashMap<String, Integer> hashMap) {

        // 以Key进行排序

        TreeMap treeMap = new TreeMap(hashMap);

        // 以value进行排序

        ArrayList<Map.Entry<String, Integer>> sortList = new ArrayList<Map.Entry<String, Integer>>(

                treeMap.entrySet());

        Collections.sort(sortList, new Comparator<Map.Entry<String, Integer>>() {

            public int compare(Map.Entry<String, Integer> mapEntry_1,

                    Map.Entry<String, Integer> mapEntry_2) {

                // 降序

                return mapEntry_2.getValue() - mapEntry_1.getValue();

                // 升序 mapEntry_1.getValue() - mapEntry_2.getValue())

            }

        });

        ArrayList<String> strSort = new ArrayList<String>();

        int loopNum = 0;

        for (Map.Entry<String, Integer> mapString : sortList) {

            // 排除-与空格

            if (!(mapString.getKey().equals("")) && !(mapString.getKey().equals("-"))) {

                strSort.add(mapString.getKey());

                strSort.add(mapString.getValue().toString());

                // 输出前100个单词

                if (loopNum > 100)

                    break;

                loopNum++;

            }

        }

        return strSort;

    }

 

4.测试设计

sortList()方法的测试设计是以黑盒测试为主。在单元测试采用断言来比较输出结果。

 

 

5.测试结果

 

 6.测试评价

词频统计的测试比较简单直接,但感觉自己测试设置的范围还不够全面。

转载于:https://www.cnblogs.com/MiniAngkor/p/8748591.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值