当前位置: 首页 > 知识库问答 >
问题:

沙弗斯比较列表

阎德宇
2023-03-14

如果我有一个实体列表(listBefore):

  entity1
  entity2
  entity3
  entity4

我重新排序列表(listAfter)

  entity1
  entity4
  entity2
  entity3

使用

Javers.compareCollections( listBefore, listAfter, Entity.class ) 
containerChanges:[(3).removed:'entity4', (1).added:'entity4']
  entity1
  entity4
  entity2
  entity3
  entity5
containerChanges:[(3).'entity4'>>'entity5', (1).added:'entity4']

更新:我在上面的例子中使用了Levenshtein比较器。

如有任何澄清,将不胜感激。

共有1个答案

彭涵衍
2023-03-14

JaVers有两种比较列表的算法:Simple和Levenshtein(请参见http://JaVers.org/documentation/diff-configuration/#list-algorithments)

默认情况下使用Simple算法,主要是因为它的速度。Levenshtein更聪明,但对于非常大的列表来说可能会很慢。来自沙弗斯医生:

SIMPLE算法为移位的元素生成更改(当元素在列表中间插入或移除时)。相反,Levenshtein算法即使在元素发生移位的情况下也会计算出简短而清晰的变化列表。它不关心移位元素的索引更改。

 类似资料:
  • 因此,我有两个大小相等的2D numpy数组,都是在两个不同的曲面上使用方法获得的。 数组中的每个值也是形式的数组(所以我基本上有一个带有1D元素的2D数组)。 基本上,我想根据条件对两者进行比较: 有没有更有效的方法可以做到这一点,而无需简单地迭代任何一个数组,如下所示?

  • # difflib_data.py text1 = """Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer eu lacus accumsan arcu fermentum euismod. Donec pulvinar porttitor tellus. Aliquam venenatis. Donec facil

  • 问题内容: 我有两个列表(不是Java列表,可以说两列) 例如 我想要一个返回多少个相同元素的方法。对于此示例,它应该为3,并且应该返回列表的相似值和不同的值。 如果是,我应该使用哈希图,然后用什么方法获得结果? 请帮忙 PS:这不是学校作业:)因此,如果您只是指导我就足够了 问题答案: 编辑 这是两个版本。一种使用,另一种使用 比较它们并从中创建您自己的版本,直到获得所需的内容。 这应该足以覆盖

  • 问题内容: 我正在与n列的PySpark DataFrame。我有一组m列(m <n),我的任务是选择其中包含最大值的列。 例如: 输入:PySpark DataFrame包含: Ouput: 在PySpark中有什么方法可以执行此操作,还是应该将PySpark df转换为Pandas df,然后执行操作? 问题答案: 您可以减少在列列表中使用SQL表达式: Spark 1.5+还提供, 如果要保

  • 我有一个简单的密码加密程序,当用户注册时,它会给我一个散列/盐析密码,以存储在我的数据库中。代码: 当用户登录时,我想我不能简单地通过此代码将输入的密码放回并进行比较,因为这会给我一个不同的结果。如何简单地将存储的密码与输入的登录密码进行比较?

  • 第一次来这里,所以我希望这是有意义的! 我有两个对象数组,比如l1和l2,我想在这两个列表之间进行比较,并在l3中得到一个不匹配的值。用户类包含2个字符串: 比如,l1包含:Java、JSF、JAXR、foo l2包含:JSF、JAXR 我可以对匹配的值进行比较,但不能对不匹配的值进行比较。这种逻辑似乎有缺陷。有什么帮助吗? 对于匹配值: 但是,对于不匹配,当我说不等于时,我得到的不是唯一的值,而