gpt4 book ai didi

java - 如何使用树格式计算差异

转载 作者:行者123 更新时间:2023-11-30 07:09:42 25 4
gpt4 key购买 nike

嗨,我想像这样显示差异,我想知道 Javers 的最佳方法是什么:

a.name          leftV <-> rightB
a.b[0].value leftV <-> rightB
a.b[0].c.foo leftV <-> rightB

举个例子:

public class A {
public A(String name, List<B> listOfB) {
this.name = name;
this.listOfB = listOfB;
}

String name;
List<B> listOfB = new ArrayList<>();
}

public class B {
public B(int id, String value, C c) {
this.id = id;
this.value = value;
this.c = c;
}

@Id
int id;
String value;
C c;
}

public class C {
public C(String address) {
this.address = address;
}

String address;
}

...
public void printGrpah() {
A a1 = new A("Foo", Arrays.asList(new B(1, "Bar", new C("Paris")),
new B(2, "Other", new C("Madrid"))));
A a2 =new A("Fooo", Arrays.asList(new B(1, "Bar2", new C("London"))));

我想要得到这样的东西:

Updated:
name Foo <-> Fooo
listOfB[0].value Bar <-> Bar2
listOfB[0].c.address Paris <-> London

Added
listOfB[1].value Other
listOfB[1].c.address Madrid

我不是在寻找最终的解决方案,而是寻找更多线索来了解我需要在哪里插入代码:

  • 我需要实现自己的访问者
  • 加上自定义 ChangeProcessor
  • ...

提前致谢。

克里斯托夫

最佳答案

ChangeProcessor 专为此类任务而设计。请参阅http://javers.org/javadoc_2.0/org/javers/core/Javers.html#processChangeList-java.util.List-org.javers.core.changelog.ChangeProcessor-

例如,要获取简单的更改日志,请调用:

 List<Change> changes = javers.calculateDiffs(...);
String changeLog = javers.processChangeList(changes, new SimpleTextChangeLog());
System.out.println( changeLog );

关于java - 如何使用树格式计算差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39424943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com