1

我很困惑,因为我需要我的数组等于另一个数组,但我不知道如何比较它们而不丢失它们的值

4

2 回答 2

2

如果两个根都为空,您将根据您尝试对第二个 if 条件执行的操作得到不希望的结果。

看起来如果两个根都为空,你想返回 true,但你返回 false。你可以只使用一个 if 语句

if(thisRoot == null || otherRoot == null){
  return thisRoot == null && otherRoot == null;
}

您在如何比较两个节点的数据方面存在更大的问题。

thisRoot.getData() != otherRoot.getData()

这种比较不是我认为你正在寻找的。相反,您应该覆盖数据对象的 equals 方法并使用它进行比较

于 2019-11-11T21:02:21.253 回答
1

您的条件顺序会导致问题。

if (thisRoot == null || otherRoot == null) {
    return false;
}
if (thisRoot == null && otherRoot == null) {
    return true;
}

即使两个分支都是,第一个条件也将评估为true(并导致) 。您应该首先评估两个分支是否都是; 之后,您可以检查其中只有一个是 的情况。return falsenullnullnull

于 2019-11-11T21:02:34.483 回答