RecursiveComparisonDifferenceCalculator 的 determineDifferences 方法无法比较 100 个对象的列表

问题描述 投票:0回答:0

我希望你能给我一些建议,因为我对 Java 世界还很陌生,并且正在尝试使用 assertj-core 递归比较 APIs 进行对象之间的深度比较,如下所示。但是,当我们传递自定义对象的集合以进行深度比较时,当它们数量很大时(例如,即使是 50 或 100,比较也需要永远),它似乎不起作用。

让我与您分享要查看的代码块。

class Owner
{
   String id;
   String name;
   ArrayList<Assignment> assignments;

   Owner(String id,String name, ArrayList<Assignment> assignments)
   {
      this.id = id;
      this.name = name;
      this.assignments = assignments;
   }
}

class Assignment
{
   String assignmentName;
   String assignmentDescription;
   
   Assignment(String assignmentName, String assignmentDescription)
   {
     this.assignmentName = assignmentName;
     this.assignmentDescription = assignmentDescription;
   }
}

从上面的模型中,我生成了一个包含 100 个所有者的列表,每个所有者都有 20 个任务。同样,另一个列出 100 个所有者,每个所有者有 20 个任务。

现在,当我开始将它们与 assertj RecursiveComparisonDifferenceCalculator 进行比较时,比较需要永远进行。

下面是我必须获得两个对象之间差异的示例代码。

var config = RecursiveComparisonConfiguration();
    
var difference = new RecursiveComparisonDifferenceCalculator.determineDifferences(list1owners, list2owners, config);

我尝试如下设置 RecursiveComparisonConfiguration 对象的属性,但它似乎不起作用并且比较有点卡住。

config.ignoreCollectionOrder(false);

不确定,但我认为上面的设置会使列表比较工作索引明智就像列表的第一个对象与另一个列表的第一个对象进行比较等等,但这似乎也不起作用并且比较仍然需要很长时间。

请指导你们可能有的所有可能的建议/解决方案,我会尝试遵循它们。

java maven recursion comparison assertj
© www.soinside.com 2019 - 2024. All rights reserved.