小编Jam*_*len的帖子

javers 比较对象中的列表给出不一致的结果

我很难理解为什么以下内容没有给我相同的结果。

如果我使用 Javers 来比较两个列表(其中的项目顺序不同),那么我不会得到任何差异,因为我已指定 AS_SET 列表比较来忽略列表中项目的顺序。

如果我随后将这些列表包装为对象的属性,Javers 会返回列表的元素因列表中项目的顺序而不同。

AS_SET 应该应用于对象内的列表吗?就好像被忽视一样

public class App {
    public static void main(String[] args) {

        List<ListItem> list1 = ImmutableList.of(
                ListItem.builder()
                        .itemName("item1")
                        .itemValue("value")
                        .build(),
                ListItem.builder()
                        .itemName("item2")
                        .itemValue("value2")
                        .build()
        );

        List<ListItem> list2 = ImmutableList.of(
                ListItem.builder()
                        .itemName("item2")
                        .itemValue("value2")
                        .build(),
                ListItem.builder()
                        .itemName("item1")
                        .itemValue("value")
                        .build()
        );

        TopLevelClass tlc1 = TopLevelClass.builder().items(list1).build();
        TopLevelClass tlc2 = TopLevelClass.builder().items(list2).build();

        Diff diff = JaversBuilder.javers().withListCompareAlgorithm(ListCompareAlgorithm.AS_SET).build().compare(list1, list2);
        System.out.println(diff);

        Diff diffTlc = JaversBuilder.javers().withListCompareAlgorithm(ListCompareAlgorithm.AS_SET).build().compare(tlc1, tlc2);
        System.out.println(diffTlc);
    }
}
Run Code Online (Sandbox Code Playgroud)

以下类别:

package wibble;

import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;

@Builder …
Run Code Online (Sandbox Code Playgroud)

javers

5
推荐指数
1
解决办法
3156
查看次数

标签 统计

javers ×1