02jmeter HashTree ListedHashTree SortedHashTree 学习

本文深入探讨了JMeter中核心数据结构HashTree的工作原理及其实现细节,包括其作为Map的实现方式、关键方法add与getTree的作用,以及HashTreeTraverser接口的使用方法。

HashTree作为jmeter的核心数据结构,对于理解jmeter的工作原理非常有作用。

jmeter HashTree从源码中可以知道,它实现了Map<Object,HashTree>,所以他就是一个Map的实现,其中Key存放的是jmeter中TestElement,而value就是存放的另外一个HashTree。

HashTree中比较重要的方法就是add(Object o, HashTree hashTree),getTree(Object o)。

从源码中可以看到,add(Object o, HashTree hashTree)其中调用了add(Object o).add(HashTree hashTree)方法,add(Object o)是添加key,如果不存在就添加一个key和new HashTree(),其中key 为TestElement, value 为一个空的HashTree;而如果o存在,则通过getTree(Object o)取出这个节点的HashTree,然后add(HashTree hashTree)方法,内部实现就是遍历下list(),list()就是Map的key.set(),然后将testElement依次添加到hashTree的key中,直到最后取出的hashTree不存在。

HashTree中另外一个比较重要的就是HashTreeTraverser接口,其中SearchByClass是其中一个重要的实现类,它当中有三个比较重要的属性:
1.objectOfClass
2.subTrees
3.class
objectOfClass存放搜索结果
subTrees 获取指定节点的子树
class 要搜索的节点类型
跟HashTree.traverse(HashTreeTraverser traverser)一起使用可以将HashTree中指定类型的TestElement放入到objectOfClass属性当中。

ListedHashTree SortedHashTree都是从HashTree继承而来,其中ListedHashTree 用LinkedList 一个链表用来有序存放key(也就是TestElement),而SortedHashTree 则是用SortedHashMap来存放相应的TestElement,从而将按照TestElement 的compare方法进行存放

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值