gpt4 book ai didi

java - equals/Arrays.deepequals 在相同数组上返回 false

转载 作者:行者123 更新时间:2023-12-02 06:51:11 25 4
gpt4 key购买 nike

我正在尝试测试两个数组是否相同,我打印了它们内部的每个值,您可以看到这些值是相同的,但由于某种原因,相等测试总是返回 false。我尝试过使用 equals 以及 Arrays.deepEquals,但这两种方法都不起作用。

这是我的代码:

System.out.println("========");
for (int i = 0; i < row.length; i++) {
System.out.println("----------");
System.out.println(row[i].getAlias());
System.out.println(row[i].getDisplay());
System.out.println(row[i].getModify());
System.out.println(row[i].getName());
System.out.println(row[i].getType());
System.out.println(row[i].getOp());
System.out.println(row[i].getValue());
System.out.println("----------");
}
System.out.println("========");

for (ResultContainer rc : editedResultsList) {
System.out.println("========");
for (int i = 0; i < rc.getResult().length; i++) {
System.out.println("----------");
System.out.println(rc.getResult()[i].getAlias());
System.out.println(rc.getResult()[i].getDisplay());
System.out.println(rc.getResult()[i].getModify());
System.out.println(rc.getResult()[i].getName());
System.out.println(rc.getResult()[i].getType());
System.out.println(rc.getResult()[i].getOp());
System.out.println(rc.getResult()[i].getValue());
System.out.println("----------");
}
System.out.println("========");
System.out.println(rc.getResult().equals(row));
System.out.println(Arrays.deepEquals(rc.getResult(), row));
System.out.println(rc.getResult() == row);

if (rc.getResult().equals(row)) {
editedResultsList.remove(rc);
}
}

这是输出:

========
----------
null
false
false
mep_ident
NUMBER
insert
0
----------
----------
Numéro Partenaire
true
true
mep_ptrpartident
NUMBER
insert
000
----------
----------
Numéro Produit
true
true
mep_ptrpasident
NUMBER
insert
111
----------
----------
Code Document
true
true
mep_code_doc
VARCHAR2
insert
222
----------
----------
Production ?
true
true
mep_production
VARCHAR2
insert
333
----------
========
========
----------
null
false
false
mep_ident
NUMBER
insert
0
----------
----------
Numéro Partenaire
true
true
mep_ptrpartident
NUMBER
insert
000
----------
----------
Numéro Produit
true
true
mep_ptrpasident
NUMBER
insert
111
----------
----------
Code Document
true
true
mep_code_doc
VARCHAR2
insert
222
----------
----------
Production ?
true
true
mep_production
VARCHAR2
insert
333
----------
========
false
false
false
true

最佳答案

来自Javadoc :

Two possibly null elements e1 and e2 are deeply equal if any of the following conditions hold:
- e1 and e2 are both arrays of object reference types, and Arrays.deepEquals(e1, e2) would return true
- e1 and e2 are arrays of the same primitive type, and the appropriate overloading of Arrays.equals(e1, e2) would return true.
- e1 == e2
- e1.equals(e2) would return true.

关于数组中对象的类,请确保正确覆盖 equals()hashcode()

更新

咨询Object javadoc ,基本上你需要将其添加到你的类中:

@Override
public boolean equals(Object other) {
// Add here code to verifiy that this object is "equals"
// to the method argument "other".
// return true if they are equal or false otherwise
}

@Override
public int hashCode() {
// Return here a "hash" integer (two objects equals to each other
// must return the same hashcode)
}

关于java - equals/Arrays.deepequals 在相同数组上返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18012030/

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