CTS测试框架 -- RegexTrie

概述:前面已经提到,基础框架Trade-Federation默认就支持很多命令。在控制台输入一组命令,肯定要经过解析,然后去执行的过程。基础框架中对于命令有一个单独的数据结构去组织,并不是通过if-else这样去比较string的。比如:前面提到的命令:run cts --plan cts,这个命令中,run才是命令,而剩下的都属于参数;再比如:list configs,还有命令的简写,list可以简写为l等等。

1.Trie

Trie树又称为字典树,又叫做单词查找树。主要用于文本检索以及词频统计等。有一个很大的优点就是能够减少无效匹配的次数。
实现方式:从root节点开始,每个节点存储一个字符。每次在向树中存储字符串的时候,根据单词中字符的顺序,逐个向树的每层去存放,如果该层已经有该字符,就去取下一个字符。
例:现在有一些单词:t,tx,txt,to,txa,too,a,b
构建成为字典树如图所示
这里写图片描述
看这个图就能一目了然,因为共前缀,能够加快查找效率,且查找以及构建的过程可以同时进行。

2.RegexTrie

RegexTrie是在这个基础框架中的一个工具类,实现跟上面的Trie很像,但是还是有区别的:区别就在于RegexTrie的节点上存放的是正则表达式,也就是支持的命令的正则表达式。
基础框架中支持两种命令:定长命令以及变长命令。
定长命令list configs – 固定的字符串(包括简写)
变长命令run cts --plan cts – 后带变长参数

树的结构:
这里写图片描述

接下来看下实现:
首先是这个类中的变量:

private V mValue = null;
private Map<CompPattern, RegexTrie<V>> mChildren = new LinkedHashMap<CompPattern, RegexTrie<V>>();
2.1 put
public V put(V value, String... regexen) {
    // 这个地方直接就把输入的正则表达式的参数解析封装为CompPattern
    // CompPattern内部有一个Pattern变量,不过自己还实现了一些Object中的方法
    List<CompPattern> pList = new ArrayList<CompPattern>(regexen.length);
    for (String regex : regexe
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值