数据查询方法、装置、电子装置和存储介质与流程

专利查询8月前  70



1.本技术涉及计算机数据处理技术领域,特别是涉及一种数据查询方法、装置、电子装置和存储介质。


背景技术:

2.在计算机语言中,映射(map)一种常用的关联容器,用于存储若干个元素,这些元素由键值(key)和映射值(value)组成。在一个映射集合中,不同元素中的key不相重复,且每个key只能映射到一个value。因此,对于相关技术中的map而言,根据给定的key,可以快速地从map集合中查找到对应的value。例如,在java语言中,可以通过v get(object key)这样的指令获取到key所对应的value。
3.但是,在实际的应用场景中,用户也有根据value查询key的需求,但是目前相关技术中的映射是单向映射,常用的数据结构例如红黑树这样的结构,无法实现根据value查询key的功能。
4.因此,相关技术中亟需一种能够对映射双向查询的方式。


技术实现要素:

5.在本实施例中提供了一种数据查询方法、装置、电子装置和存储介质,以解决相关技术中在使用map时无法通过value寻找到key的技术问题。
6.第一个方面,在本实施例中提供了一种数据查询方法,包括:获取映射集合中待查询键值对元素的映射值;按照预设规则,根据所述映射值确定所述待查询键值对元素的键值所对应的第一索引;根据所述第一索引获取所述待查询键值对元素的键值。
7.在其中的一些实施例中,所述按照预设规则,根据所述映射值确定所述待查询键值对元素的键值所对应的第一索引,包括:确定所述映射值所对应的散列值;根据所述散列值以及所述映射集合中用于存储键值对元素的数组长度,确定所述待查询键值对元素的键值所对应的第一索引。
8.在其中的一些实施例中,所述根据所述散列值以及所述映射集合中用于存储键值对元素的数组长度,确定所述待查询键值对元素的键值所对应的第一索引,包括,第一索引=(l

1)&散列值,其中,l为所述数组长度,所述散列值是对所述映射值进行的散列计算,&为与运算。
9.在其中的一些实施例中,所述方法还包括:
10.在所述映射集合中键值对元素的数量更新的情况下,确定更新后的键值对元素的数量;根据更新后的所述数量,更新所述数组长度。
11.在其中的一些实施例中,所述第一索引包括所述待查询键值对元素所在的数组标识信息。
12.在其中的一些实施例中,所述方法还包括:获取映射集合中待查询键值对元素的键值;按照预设规则,根据所述键值确定所述待查询键值对元素的映射值所对应的第二索
引;根据所述第二索引获取所述待查询键值对元素的映射值。
13.在其中的一些实施例中,所述预设规则与开发语言和/或数据结构相匹配。
14.第二个方面,在本实施例中提供了一种数据查询装置,包括:获取模块、确定模块和查询模块;所述获取模块用于获取映射集合中待查询键值对元素的映射值;所述确定模块用于按照预设规则,根据所述映射值确定所述待查询键值对元素的键值所对应的索引;所述查询模块用于根据所述索引获取所述待查询键值对元素的键值。
15.第三个方面,在本实施例中提供了一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的运算机程序,所述处理器执行所述运算机程序时实现上述第一个方面所述的数据查询方法。
16.第四个方面,在本实施例中提供了一种存储介质,其上存储有运算机程序,该程序被处理器执行时实现上述第一个方面所述的数据查询方法。
17.与相关技术相比,在本技术实施例中,提供的数据查询方法,首先,利用索引查询所述待查询键值对元素中的键值,由于根据所述索引可以定位至所述待查询键值对元素在数组中的位置,并从所述待查询键值对元素中获取到所述映射值所对应的键值。因此,相对于没有索引的查询方式,基于索引的查询方式可以大大减少遍历匹配的次数,明显提升查询速度。其次,根据待查询键值对元素的映射值,可以确定对所述键值的索引,也就是说,通过待查询键值对元素的映射值本身,即可查询到与该映射值对应的键值。因此,本技术解决了相关技术中不可以通过映射值查询到键值对元素中映射值所对应的键值的问题。实现了通过映射值查询到键值的技术效果。
18.本技术的一个或多个实施例的细节在以下附图和描述中提出,以使本技术的其他特征、目的和优点更加简明易懂。
附图说明
19.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
20.图1是本技术实施例的数据查询方法的流程图;
21.图2是本实施例的根据映射值确定待查询键值对元素的键值所对应的第一索引的流程图;
22.图3是本技术实施例的另一数据查询方法的流程图;
23.图4是本技术实施例的数组结构示意图;
24.图5是本实施例的数据查询装置的结构框图;
25.图6是本实施例的数据查询装置的优选结构框图。
具体实施方式
26.为更清楚地理解本技术的目的、技术方案和优点,下面结合附图和实施例,对本技术进行了描述和说明。
27.除另作定义外,本技术所涉及的技术术语或者科学术语应具有本技术所属技术领域具备一般技能的人所理解的一般含义。在本技术中的“一”、“一个”、“一种”、“该”、“这些”等类似的词并不表示数量上的限制,它们可以是单数或者复数。在本技术中所涉及的术语“包括”、“包含”、“具有”及其任何变体,其目的是涵盖不排他的包含;例如,包含一系列步骤或模块(单元)的过程、方法和系统、产品或设备并未限定于列出的步骤或模块(单元),而可包括未列出的步骤或模块(单元),或者可包括这些过程、方法、产品或设备固有的其他步骤或模块(单元)。在本技术中所涉及的“连接”、“相连”、“耦接”等类似的词语并不限定于物理的或机械连接,而可以包括电气连接,无论是直接连接还是间接连接。在本技术中所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。通常情况下,字符“/”表示前后关联的对象是一种“或”的关系。在本技术中所涉及的术语“第一”、“第二”、“第三”等,只是对相似对象进行区分,并不代表针对对象的特定排序。
28.下面结合附图对本技术所述的数据查询方法进行详细的说明。图1是本技术提供的数据查询方法的一种实施例的流程示意图。虽然本技术提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑性上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本技术实施例提供的执行顺序。所述方法在实际中的数据查询过程中或者方法执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
29.具体的,本技术提供的数据查询方法的一种实施例如图1所示,所述方法可以包括:
30.步骤101:获取映射集合中待查询键值对元素的映射值。
31.本技术实施例中,所述映射集合可以包括至少一个待查询键值对元素。其中,所述待查询键值对元素可以包括一一对应的键值(key)和映射值(value)两部分。在本技术实施例中,所述映射集合中所包含的键值对元素中,可以包括不可重复的键值,且每个键值只能映射至一个映射值。在一个示例中,所述映射集合可以包括姓名和性别的映射关系,可以包括《张三,男》、《李四,女》等这样的键值对元素,其中,“张三”是键值,与键值对应的映射值是“男”,相应的,“李四”是键值,与键值对应的映射值是“女”。
32.步骤103:按照预设规则,根据所述映射值确定所述待查询键值对元素的键值所对应的第一索引。
33.本技术实施例中,在获取到所述待查询键值对元素的映射值之后,可以按照预设规则,根据映射值确定所述键值所对应的第一索引。其中,所述第一索引可以指向所述键值的存储位置,根据所述第一索引,可以快速获取到所述映射值所对应的键值。在相关技术中,例如对于链表结构的映射集合,没有索引的方式查询往往是根据搜索条件进行全表扫描,在遇到与所述搜索条件相匹配的结果时,将该结果添加至搜索结果集合中。但是,这样的方式匹配时间长,耗时久,效率低。基于此,在本技术的各个实施例中,可以利用索引查询所述待查询键值对元素中的键值。在利用数组结构存储键值对元素的情况下,根据所述索引可以定位至所述待查询键值对元素在数组中的位置,并从所述待查询键值对元素中获取到所述映射值所对应的键值。因此,相对于没有索引的查询方式,基于索引的查询方式可以大大减少遍历匹配的次数,明显提升查询速度。
34.所述预设规则可以包括预先设置的用于确定所述第一索引的方式的规则。所述预设规则当然也是将所述键值对元素按照上述一一对应的方式存储至映射集合内时所遵循
的规则。需要说明的是,所述预设规则还可以与开发语言、数据结构等因素相匹配,针对不同的开发语言、数据结构等,设置的所述预设规则可以不相同。在一个示例中,所述预设规则可以是基于java语言、数组数据结构而设定的规则。
35.在本技术的一个实施例中,图2示出了根据映射值确定待查询键值对元素的键值所对应的第一索引的流程图。如图2所示,所述按照预设规则,根据所述映射值确定所述待查询键值对元素的键值所对应的第一索引,可以包括如下步骤:
36.步骤201:确定所述映射值所对应的散列值;
37.本技术实施例中,按照所述预设规则,首先可以确定所述映射值所对应的散列值。其中,散列值是利用散列函数(或散列算法,又称哈希函数,又译为加密散列函数,英语:hash function)对输入数据计算得到的输出结果。对于散列函数而言,将任意长度的数据输入至散列函数,可以转换成固定长度的散列值,该固定长度可以包括64位、128位、256位等,该固定长度具体可根据存储所述键值对元素的数组长度确定。在一些示例中,所述散列函数可以包括md5、sha、mac、crc等等,本技术在此不做限制。
38.在本技术实施例中,由于散列值具有唯一性的特征,因此,将所述映射值转换成散列值,可以使得后续确定的所述键值的索引同样也是唯一的,不会造成索引的重复。
39.步骤202:根据所述散列值以及所述映射集合中用于存储键值对元素的数组长度,确定所述待查询键值对元素的键值所对应的第一索引。
40.本技术实施例中,可以将所述映射集合中的多个键值对元素有序地存储于数组数据结构中。数据具有数组长度,在本技术实施例中,所述数组长度是指用于存储键值对元素的集合长度。在本技术实施例中,所述数组长度是创建所述映射集合时预先设置的长度,数组的长度大于等于待存储的键值对元素的数量,为了便于计算机处理,可以将数组长度设置为2的指数次幂。在一个示例中,数组长度可以是16,64,128等。一般创建映射集合时的数组长度是默认16。
41.在本技术的一个实施例中,所述根据所述散列值以及所述映射集合中用于存储键值对元素的数组长度,确定所述待查询键值对元素的键值所对应的第一索引,包括,第一索引=(l

1)&散列值,其中,l为所述数组长度,所述散列值是对所述映射值进行的散列计算,&为与运算。
42.图4是本技术实施例的数组结构示意图,如图4所示,矩形方框是用于存储键值对元素的数组,在本技术实施例中,将键值对元素按照一一对应的方式存储在矩形方框内,在一个示例中,可以包括学号和姓名的映射关系,例如,包括《01,张三》、《02,李四》、《03,王五》等。由于数组的长度是16,该映射集合最多能存储16对以学号和姓名的键值对元素。
43.步骤105:根据所述第一索引获取所述待查询键值对元素的键值。
44.本技术的一个实施例中,根据所述第一索引查询出待查询键值对元素的键值。在一个示例中,将键值对元素《01,张三》、《02,李四》、《03,王五》等存储至数组长度为16的映射集合中,下面可以以待查询映射值“李四”为例说明如何根据映射值查询对应的键值的过程。
45.首先,预设规则是存储键值对元素时预先设置的规则,在查询键值对元素时应当遵循该预设规则,例如,预设规则还包括:将键值对元素的键值索引存储至映射值的位置,将键值对元素的映射值索引存储至映射值的位置。待通过键值对元素的映射值查询时键值
时,只需计算出键值所对应的索引,即可依据所述索引查询到索引所对应的键值。
46.具体的,先确定待查询映射值“李四”对应的散列值,散列值的确定步骤如下:
47.先计算映射值“李四”的散列函数的输出值,散列函数可以是信息摘要算法,在一个示例中,散列函数可以是md2函数,也可以是md4函数,又或者可以是md5函数。在本技术实施例中,先计算映射值“李四”的散列函数的输出值,其中,散列函数以md5值为例,比如,映射值“李四”的md5函数的散列值为“202cb962ac59075b964b07152d234b70”。
48.进一步的,再分别确定散列值“202cb962ac59075b964b07152d234b70”中的每一个字符所对应的ascii值,例如得到所述散列值对应的二进制结果“08786413135613165456784”。
49.在本技术实施例中,已知数组长度为16。
50.依据计算公式:索引=(l

1)&散列值,分别将映射值长度和散列值代入上述计算公式,在本技术实施例中,键值“02”的索引=(16-1)&08786413135613165456784,即可计算出所述键值“02”的索引。
51.进一步的,依据键值“02”的索引值,即可查询到映射值“李四”所对应的键值“02”。
52.在本技术实施例中,首先,利用索引查询所述待查询键值对元素中的键值,由于根据所述索引可以定位至所述待查询键值对元素在数组中的位置,并从所述待查询键值对元素中获取到所述映射值所对应的键值。因此,相对于没有索引的查询方式,基于索引的查询方式可以大大减少遍历匹配的次数,明显提升查询速度。其次,根据待查询键值对元素的映射值,可以确定对所述键值的索引,也就是说,通过待查询键值对元素的映射值本身,即可查询到与该映射值对应的键值。因此,本技术解决了相关技术中不可以通过映射值查询到键值对元素中映射值所对应的键值的问题。实现了通过映射值查询到键值的技术效果。
53.图3是本技术实施例的另一数据查询方法的流程图,如图3所示,在其中一些实施例中,数据查询方法还包括:
54.步骤301:获取映射集合中待查询键值对元素的键值;
55.步骤303:按照预设规则,根据所述键值确定所述待查询键值对元素的映射值所对应的第二索引;
56.步骤305:根据所述第二索引获取所述待查询键值对元素的映射值。
57.在本技术实施例中,该方法用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。
58.在本技术实施例中,首先,根据待查询键值对元素的映射值,可以确定所述键值的索引,也就是说,通过待查询键值对元素的映射值本身,即可查询到与该映射值对应的键值。其次,根据待查询键值对元素的键值,可以确定所述映射值的索引,也就是说,通过待查询键值对元素的键值本身,即可查询到与该键值对应的映射值,因此,本技术解决了既可以通过映射值查询到键值对元素中映射值所对应的键值,又可以通过键值查询到键值对元素中键值所对应的映射值的技术问题。实现了通过键值对元素的键值和映射值的双向查询的技术效果。
59.在其中一些实施例中,数据查询方法还包括:
60.在所述映射集合中键值对元素的数量更新的情况下,确定更新后的键值对元素的数量;根据更新后的所述数量,更新所述数组长度。
61.如图4所示,本技术实施例中,如果映射集合创建时的数组长度16,当待存储的键值对元素的数量大于16时,需重新扩展映射集合的数组长度,才能将待存储的键值对元素全部存储至映射集合内。
62.本技术实施例中,将映射集合的数组长度从原来的16扩展到现在的32,对应的,存储在数组内的键值对元素的索引也需要按照公式:索引=(l-1)&散列值,更新索引值。
63.在一个示例中,以工号和年龄的映射关系为例,将键值对元素《001,22》、《002,31》、《003,27》、《004,28》、《005,45》、《006,37》、《007,25》、《008,20》、《009,52》、《010,24》、《011,28》、《012,33》、《013,36》、《014,37》等存储至数组长度为16的映射集合中,随着公司的扩展,人员增加,现员工数量增至20人,原来的映射值长度16不能将全部人员信息存入映射集合内,需扩展原来映射集合的数组长度,比如将数组长度扩展至32,将键值对元素《001,22》、《002,31》、《003,27》、《004,28》、《005,45》、《006,37》、《007,25》、《008,20》、《009,52》、《010,24》、《011,28》、《012,33》、《013,36》、《014,37》重新存储至扩展后的数组中,并将新增的键值对元素《015,23》、《016,29》、《017,30》、《018,34》、《019,49》、《020,55》也存储至扩展后的数组中去,键值对元素《001,22》、《002,31》、《003,27》、《004,28》、《005,45》、《006,37》、《007,25》、《008,20》、《009,52》、《010,24》、《011,28》、《012,33》、《013,36》、《014,37》的索引依据公式:索引=(l-1)&散列值重新更新。
64.在其中一些实施例中,所述第一索引包括所述待查询键值对元素所在的数组标识信息。
65.本技术实施例中,数组是用于储存多个相同类型数据的集合。
66.在本实施例中,数组标识信息是指给数组编排序号,数组标识序号一般从0开始,例如,创建一个数组长度为32的映射集合,数组标识序号从0开始,依次顺序排列,第32位数组的标识序号即为31。
67.在本实施例中还提供了一种数据查询装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。以下所使用的术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管在以下实施例中所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
68.图5是本实施例的数据查询装置的结构框图,如图5所示,该装置包括:获取模块、确定模块和查询模块;
69.获取模块用于获取映射集合中待查询键值对元素的映射值。
70.确定模块用于按照预设规则,根据映射值确定待查询键值对元素的键值所对应的索引。
71.查询模块用于根据索引获取待查询键值对元素的键值。
72.图6是本实施例的数据查询装置的优选结构框图,如图6所示,该装置包括图5所示的所有模块,此外还包括:第二获取模块,第二确定模块,第二查询模块;
73.第二获取模块用于获取映射集合中待查询键值对元素的键值;
74.第二确定模块用于按照预设规则,根据键值确定待查询键值对元素的映射值所对应的第二索引;
75.第二查询模块用于根据第二索引获取待查询键值对元素的映射值。
76.需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软
件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
77.在本实施例中还提供了一种电子装置,包括存储器和处理器,该存储器中存储有运算机程序,该处理器被设置为运行运算机程序以执行上述任一项方法实施例中的步骤。
78.可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
79.可选地,在本实施例中,上述处理器可以被设置为通过运算机程序执行以下步骤:
80.步骤1,获取映射集合中待查询键值对元素的映射值。
81.步骤2,按照预设规则,根据映射值确定待查询键值对元素的键值所对应的第一索引。
82.步骤3,根据第一索引获取待查询键值对元素的键值。
83.需要说明的是,在本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,在本实施例中不再赘述。
84.此外,结合上述实施例中提供的数据查询方法,在本实施例中还可以提供一种存储介质来实现。该存储介质上存储有运算机程序;该运算机程序被处理器执行时实现上述实施例中的任意一种数据查询方法。
85.应该明白的是,这里描述的具体实施例只是用来解释这个应用,而不是用来对它进行限定。根据本技术提供的实施例,本领域普通技术人员在不进行创造性劳动的情况下得到的所有其它实施例,均属本技术保护范围。
86.显然,附图只是本技术的一些例子或实施例,对本领域的普通技术人员来说,也可以根据这些附图将本技术适用于其他类似情况,但无需付出创造性劳动。另外,可以理解的是,尽管在此开发过程中所做的工作可能是复杂和漫长的,但是,对于本领域的普通技术人员来说,根据本技术披露的技术内容进行的某些设计、制造或生产等更改仅是常规的技术手段,不应被视为本技术公开的内容不足。
[0087]“实施例”一词在本技术中指的是结合实施例描述的具体特征、结构或特性可以包括在本技术的至少一个实施例中。该短语出现在说明书中的各个位置并不一定意味着相同的实施例,也不意味着与其它实施例相互排斥而具有独立性或可供选择。本领域的普通技术人员能够清楚或隐含地理解的是,本技术中描述的实施例在没有冲突的情况下,可以与其它实施例结合。
[0088]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对专利保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。

技术特征:
1.一种数据查询方法,其特征在于,包括:获取映射集合中待查询键值对元素的映射值;按照预设规则,根据所述映射值确定所述待查询键值对元素的键值所对应的第一索引;根据所述第一索引获取所述待查询键值对元素的键值。2.根据权利要求1所述的数据查询方法,其特征在于,所述按照预设规则,根据所述映射值确定所述待查询键值对元素的键值所对应的第一索引,包括:确定所述映射值所对应的散列值;根据所述散列值以及所述映射集合中用于存储键值对元素的数组长度,确定所述待查询键值对元素的键值所对应的第一索引。3.根据权利要求2所述的数据查询方法,其特征在于,所述根据所述散列值以及所述映射集合中用于存储键值对元素的数组长度,确定所述待查询键值对元素的键值所对应的第一索引,包括,第一索引=(l

1)&散列值,其中,l为所述数组长度,所述散列值是对所述映射值进行的散列计算,&为与运算。4.根据权利要求2所述的数据查询方法,其特征在于,所述方法还包括:在所述映射集合中键值对元素的数量更新的情况下,确定更新后的键值对元素的数量;根据更新后的所述数量,更新所述数组长度。5.根据权利要求2所述的数据查询方法,其特征在于,所述第一索引包括所述待查询键值对元素所在的数组标识信息。6.根据权利要求1所述的数据查询方法,其特征在于,所述方法还包括:获取映射集合中待查询键值对元素的键值;按照预设规则,根据所述键值确定所述待查询键值对元素的映射值所对应的第二索引;根据所述第二索引获取所述待查询键值对元素的映射值。7.根据权利要求1所述的数据查询方法,其特征在于,所述预设规则与开发语言和/或数据结构相匹配。8.一种数据查询装置,其特征在于,包括:获取模块、确定模块和查询模块;所述获取模块用于获取映射集合中待查询键值对元素的映射值;所述确定模块用于按照预设规则,根据所述映射值确定所述待查询键值对元素的键值所对应的索引;所述查询模块用于根据所述索引获取所述待查询键值对元素的键值。9.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有运算机程序,所述处理器被设置为运行所述运算机程序以执行权利要求1至7中任一项所述的数据查询方法。10.一种运算机可读存储介质,其上存储有运算机程序,其特征在于,所述运算机程序被处理器执行时实现权利要求1至7中任一项所述的数据查询方法的步骤。

技术总结
本申请涉及一种数据查询方法,本申请涉及运算机网络技术领域,其中,该数据查询方法包括:获取映射集合中待查询键值对元素的映射值;按照预设规则,根据所述映射值确定所述待查询键值对元素的键值所对应的第一索引;根据所述第一索引获取所述待查询键值对元素的键值。通过本申请,本申请解决了既可以通过映射值查询到键值对元素中映射值所对应的键值,又可以通过键值查询到键值对元素中键值所对应的映射值的技术问题。实现了通过键值对元素的键值和映射值的双向查询的技术效果。键值和映射值的双向查询的技术效果。键值和映射值的双向查询的技术效果。


技术研发人员:张玉康 范渊 刘博
受保护的技术使用者:杭州安恒信息技术股份有限公司
技术研发日:2021.11.15
技术公布日:2022/3/8

最新回复(0)