【技术实现步骤摘要】
一种Queue容器的实现方法和装置
本专利技术涉及计算机
,特别涉及一种队列(Queue)容器的实现方法和装置。
技术介绍
数据处理过程中经常需要使用Queue进行数据存储,Java中通常使用的Queue为JDK提供的LinkedBlockingQueue。JDK提供的LinkedBlockingQueue中,使用带头指针head和尾指针last的单链表实现,头指针head直接指向队头的第一个节点(Node)对象,尾指针last指向队尾的最后一个节点,其结构如图1所示,每个节点对象中包括两部分内容:指向数据位置的引用地址(指针)、指向下一节点的引用地址(指针),其中,指向数据位置的引用地址中存储的是数据对象,而数据对象中包括对象描述信息、value数据等信息。从图1可以看出,使用LinkedBlockingQueue进行数据存储时,每个value数据都需要使用一个节点对象和一个数据对象,而业务数据处理所针对的有效数据信息实际上只是value数据对象中的value数据,其它数据信息则与业务数据处理无关但是却额外占用了较多的内存空间。以int类型的value数据为例,当使用LinkedBlockingQueue进行存储时,value数据自身只占用4字节(byte),然而,与其存储相关的node对象中,两个引用地址共占用8字节,另外,与其相关的数据对象中的对象描述信息也要占用一定内存空间,可以看出,这些额外占用的内存空间比value数据本身占用的空间还要多很多。可以看出,现有LinkedBlockin ...
【技术保护点】
1.一种Queue容器的实现方法,其特征在于,该方法包括:/n创建预设基本数据类型的数组,将所述数组作为所述Queue容器的底层存储数据结构;/n对于使用所述Queue容器进行数据存储的任一基本数据类型,确定所述任一基本数据类型对应于所述预设基本数据类型的转换长度N;N为正整数;/n基于所述转换长度N,在所述Queue容器维护的所述数组中进行所述任一基本数据类型的数据的存储和读取。/n
【技术特征摘要】
1.一种Queue容器的实现方法,其特征在于,该方法包括:
创建预设基本数据类型的数组,将所述数组作为所述Queue容器的底层存储数据结构;
对于使用所述Queue容器进行数据存储的任一基本数据类型,确定所述任一基本数据类型对应于所述预设基本数据类型的转换长度N;N为正整数;
基于所述转换长度N,在所述Queue容器维护的所述数组中进行所述任一基本数据类型的数据的存储和读取。
2.根据权利要求1所述的方法,其特征在于,
确定所述任一基本数据类型对应于所述预设基本数据类型的转换长度N的方法为:
计算所述任一基本数据类型的长度与所述预设基本数据类型的长度的商;
将所述商的向上取整结果确定为所述任一基本数据类型对应于所述预设基本数据类型的转换长度N。
3.根据权利要求1所述的方法,其特征在于,
所述Queue容器维护有尾指针;所述尾指针指向最后存入所述Queue容器维护的数组中的数据的结束位置;
基于所述转换长度N,在所述Queue容器维护的所述数组中进行所述任一基本数据类型的数据的存储,包括:
将待存储数据转换为N个所述预设基本数据类型的数据,从所述Queue容器维护的尾指针指向的所述数组中的位置开始顺序存入转换后的N个数据,并对所述Queue容器的尾指针指向所述数组中的位置进行更新。
4.根据权利要求1所述的方法,其特征在于,
所述Queue容器维护有头指针;所述头指针指向最先存入所述Queue容器维护的数组中的数据的起始位置;
基于所述转换长度N,在所述Queue容器维护的所述数组中进行所述任一基本数据类型的数据的读取,包括:
从所述Queue容器维护的头指针指向的所述数组中的位置开始顺序读取N个数组元素,将顺序读取的N个数据转换为所述任一基本数据类型的数据,并对所述Queue容器维护的头指针指向所述数组中的位置进行更新。
5.根据权利要求1所述的方法,其特征在于,该方法进一步包括:
当所述Queue容器维护的所述数组中存储的数组元素的个数超出所述数组的数组长度的预设比例,且所述数组的数组长度小于预设最大数组长度时,对所述数组的数组长度进行扩充;
基于扩充后的数组长度创建所述预设基本数据类型的新的数组;
将所述Queue容器维护的所述数组中的数据按照存入的先后顺序依次存入新的数组,并将所述Queue容器维护的头指针指向最先存入新的数组中的数据的起始位置,将所述Queue容器维护的尾指针指向最后存入新的数组中的数据的结束位置;
用新的数组取代所述Queue容器维护的所述数组作为所述Queue容器的底层存储数据结构,并删除所述Queue容器维护的所述数组。
6.根据权利要求1所述的方法,其特征在于,
所述预设基本数据类型为字节byte类型。
7.一种Queue容器的实现装置,其特征在于,该装置包括:
创建单元,用于创建预设基本数据类型的数组,将所述数组作为所述Queue容器的底层存储数据结构;
确定单元,用于对于使用所述Queue容器进行数据存储的任一基本数据类型,确定所述任一基本数据类型对应于所述...
【专利技术属性】
技术研发人员:张林,
申请(专利权)人:北京京东振世信息技术有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。