对比方法和相关产品技术

技术编号:31489491 阅读:11 留言:0更新日期:2021-12-18 12:25
本申请实施例公开了一种对比方法和相关产品,该方法包括:使用公共对象确定多个待对比对象对应的目标键;该多个待对比对象由一个或多个文件中的多个原始待对比对象扁平化得到,该多个待对比对象与该多个原始待对比对象一一对应,该多个待对比对象中至少两个待对比对象包含的目标键的值不同,或者,该多个待对比对象中至少一个待对比对象不包含目标键;该多个待对比对象中的每个待对比对象包含一个或多个键,每个键对应一个或多个值;输出该多个待对比对象的对比结果,该对比结果包含该多个待对比对象中每个待对比对象包含的目标键的值。本申请实施例中,使用公共对象确定多个待对比对象对应的目标键,可以减少空间开销。可以减少空间开销。可以减少空间开销。

【技术实现步骤摘要】
对比方法和相关产品


[0001]本申请涉及计算机领域,尤其涉及一种对比方法和相关产品。

技术介绍

[0002]两个或者多个对象之间的对比,目前主流的做法是深度比较,即深度优先搜索遍历对象的每一层得出差异(diff)。然而,对多个对象逐一进行深度比较,会有大量计算冗余,造成时间和空间的浪费。因此需要研究时间或者空间开销更少的对比多个对象的方法。

技术实现思路

[0003]本申请实施例公开了一种对比方法和相关产品。
[0004]第一方面,本申请实施例提供了一种对比方法,该方法包括:使用公共对象确定多个待对比对象对应的目标键;所述多个待对比对象由一个或多个文件中的多个原始待对比对象扁平化得到,所述多个待对比对象与所述多个原始待对比对象一一对应,所述多个待对比对象中至少两个待对比对象包含的所述目标键的值不同,或者,所述多个待对比对象中至少一个待对比对象不包含所述目标键;所述多个待对比对象中的每个待对比对象包含一个或多个键,每个键对应一个或多个值;输出所述多个待对比对象的对比结果,所述对比结果包含所述多个待对比对象中每个待对比对象包含的所述目标键的值。
[0005]假定所有原始待对比对象的叶子节点的个数为n,使用公共对象确定多个待对比对象对应的目标键在空间复杂度上,多个待对比对象的空间占用为n,公共对象的空间占用最多为n。对多个对象逐一进行深度比较的方案需要占用为o(k*n),其中k为对象的最大深度。n为大于1的整数,k为大于2的整数。本申请实施例中,使用公共对象确定多个待对比对象对应的目标键,可以减少空间开销。
[0006]在一种可能的实现方式中,所述使用公共对象确定多个待对比对象对应的目标键包括:先后基于所述多个待对比对象中每个待对比对象包含的各键和各键的值,更新所述公共对象中的键和/或所述公共对象中的键对应的记数值;所述公共对象中的每个键对应一个记数值;基于所述公共对象中的各键对应的记数值,确定所述目标键;所述公共对象中的所述目标键对应的记数值不等于所述待对比对象的个数。
[0007]在该实现方式中,先后基于多个待对比对象中每个待对比对象包含的各键和各键的值,更新公共对象中的键和/或公共对象中的键对应的记数值,只需更新公共对象中的键和/或公共对象中的键对应的记数值,处理量较少、对比效率高。
[0008]在一种可能的实现方式中,所述先后使用所述多个待对比对象中每个待对比对象包含的各键和各键的值,更新所述公共对象中的键和/或所述公共对象中的键对应的记数值包括:在所述多个待对比对象中的第一待对比对象包含的第一键的值与所述公共对象中的所述第一键的值相同的情况下,将所述公共对象中的所述第一键对应的记数值加一;在所述多个待对比对象中的所述第一待对比对象包含的所述第一键的值与所述公共对象中的所述第一键的值不同的情况下,将所述公共对象中的所述第一键对应的记数值更新为
一。
[0009]在该实现方式中,能够准确、快速地更新公共对象中的第一键对应的记数值,以便根据公共对象中的第一键对应的记数值确定该第一键在各个待对比对象中的值是否存在差异或者在某些待对比对象中是否不存在该第一键。
[0010]在一种可能的实现方式中,所述第一待对比对象包含的所述第一键的值与所述公共对象中的所述第一键的值不同,所述方法还包括:将所述公共对象中的所述第一键的值更新为所述第一待对比对象包含的所述第一键的值。
[0011]在该实现方式中,将公共对象中的第一键的值更新为第一待对比对象包含的第一键的值,可以记录第一键最近一个的值以方便后续的比对。
[0012]在一种可能的实现方式中,在将所述公共对象中的所述第一键对应的记数值加一之前,所述方法还包括:在所述公共对象中未包含所述多个待对比对象中的第二待对比对象包含的所述第一键的情况下,在所述公共对象中创建所述第一键,并将所述公共对象中的所述第一键的值设置为所述第二待对比对象包含的所述第一键的值以及将所述公共对象中的所述第一键对应的记数值设置为一。
[0013]在该实现方式中,创建公共对象未包含的第一键,并将该公共对象中的第一键的值设置为第二待对比对象包含的第一键的值以及将公共对象中的第一键对应的记数值设置为一;以便后续根据第一键对应的记数值确定该第一键在各个待对比对象中的值是否存在差异或者在某些待对比对象中是否不存在该第一键。
[0014]在一种可能的实现方式中,所述多个原始待对比对象中的至少一个的树结构有两层或两层以上子节点,所述多个待对比对象中的任意一个的树结构只有根节点和一层子节点。
[0015]在该实现方式中,多个待对比对象中的任意一个的树结构只有根节点和一层子节点,使用公共对象确定多个待对比对象对应的目标键;存储空间占用较少。
[0016]在一种可能的实现方式中,所述先后基于所述多个待对比对象中每个待对比对象包含的各键和各键的值,更新所述公共对象中的键和/或所述公共对象中的键对应的记数值包括:在基于所述多个待对比对象中的第三待对比对象包含的各键和各键的值,更新所述公共对象中的键和/或所述公共对象中的键对应的记数值的过程中,对第四原始待对比对象做扁平化处理以得到第四待对比对象;所述第四待对比对象包含于所述多个待对比对象,所述第三待对比对象由第三原始待对比对象扁平化得到,所述第三原始待对比对象和所述第四原始待对比对象包含于同一文件或不同文件。
[0017]在该实现方式中,在基于多个待对比对象中的第三待对比对象包含的各键和各键的值,更新公共对象中的键和/或公共对象中的键对应的记数值的过程中,对第四原始待对比对象做扁平化处理以得到第四待对比对象。也就是说,对第四原始待对比对象做扁平化处理的操作和基于多个待对比对象中的第三待对比对象包含的各键和各键的值,更新公共对象中的键和/或公共对象中的键对应的记数值的操作并行处理,能够有效减少时间开销,即降低时间复杂度。
[0018]在一种可能的实现方式中,在输出所述多个待对比对象的对比结果之前,所述方法还包括:在所述公共对象中的所述目标键对应的记数值不等于所述多个待对比对象的个数的情况下,将所述目标键写入中间结果数组;获取所述中间结果数组中的每个键在所述
多个待对比对象中的值,得到所述对比结果。
[0019]在该实现方式中,获取中间结果数组中的每个键在多个待对比对象中的值,得到对比结果;能够快速地获得对比结果,操作简单。
[0020]在一种可能的实现方式中,所述输出所述多个待对比对象的对比结果包括:将所述多个待对比对象的对比结果进行表格化展示。
[0021]在该实现方式中,将多个待对比对象的对比结果进行表格化展示,以便用户更直观地看到多个待对比对象的对比结果,提高用户体验。
[0022]在一种可能的实现方式中,所述方法还包括:对所述一个或多个文件中的所述多个原始待对比对象做扁平化处理,得到所述多个待对比对象。
[0023]在该实现方式中,对多个原始待对比对象做扁平化处理,得到多个待对比对象;以便使用公共对象确定多个待对比对象对本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种对比方法,其特征在于,包括:使用公共对象确定多个待对比对象对应的目标键;所述多个待对比对象由一个或多个文件中的多个原始待对比对象扁平化得到,所述多个待对比对象与所述多个原始待对比对象一一对应,所述多个待对比对象中至少两个待对比对象包含的所述目标键的值不同,或者,所述多个待对比对象中至少一个待对比对象不包含所述目标键;所述多个待对比对象中的每个待对比对象包含一个或多个键,每个键对应一个或多个值;输出所述多个待对比对象的对比结果,所述对比结果包含所述多个待对比对象中每个待对比对象包含的所述目标键的值。2.根据权利要求1所述的方法,其特征在于,所述使用公共对象确定多个待对比对象对应的目标键包括:先后基于所述多个待对比对象中每个待对比对象包含的各键和各键的值,更新所述公共对象中的键和/或所述公共对象中的键对应的记数值;所述公共对象中的每个键对应一个记数值;基于所述公共对象中的各键对应的记数值,确定所述目标键;所述公共对象中的所述目标键对应的记数值不等于所述待对比对象的个数。3.根据权利要求2所述的方法,其特征在于,所述先后使用所述多个待对比对象中每个待对比对象包含的各键和各键的值,更新所述公共对象中的键和/或所述公共对象中的键对应的记数值包括:在所述多个待对比对象中的第一待对比对象包含的第一键的值与所述公共对象中的所述第一键的值相同的情况下,将所述公共对象中的所述第一键对应的记数值加一;在所述多个待对比对象中的所述第一待对比对象包含的所述第一键的值与所述公共对象中的所述第一键的值不同的情况下,将所述公共对象中的所述第一键对应的记数值更新为一。4.根据权利要求3所述的方法,其特征在于,所述第一待对比对象包含的所述第一键的值与所述公共对象中的所述第一键的值不同,所述方法还包括:将所述公共对象中的所述第一键的值更新为所述第一待对比对象包含的所述第一键的值。5.根据权利要求3或4所述的方法,其特征在于,在将所述公共对象中的所述第一键对应的记数值加一之前,所述方法还包括:在所述公共对象中未包含所述多个待对比对象中的第二待对比对象包含的所述第一键的情况下,在所述公共对象中创建所述第一键,并将所述公共对象中的所述第一键的值设置为所述...

【专利技术属性】
技术研发人员:曾天杨阳胡世昌石明康杨冠姝
申请(专利权)人:上海商汤科技开发有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1