首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等于/ Arrays.deepequals在相同的数组上返回false

等于/ Arrays.deepequals在相同的数组上返回false
EN

Stack Overflow用户
提问于 2013-08-02 08:19:07
回答 2查看 1K关注 0票数 0

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

这是我的密码:

代码语言:javascript
复制
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);
    }
}

这是输出:

代码语言:javascript
复制
========
----------
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-02 08:24:11

来自Javadoc

两个可能为空的元素e1和e2是非常相等的,如果下列任何条件都成立的话:

  • e1和e2都是对象引用类型的数组,Arrays.deepEquals(e1,e2)将返回true。
  • e1和e2是相同基本类型的数组,适当的Arrays.equals重载(e1,e2)将返回true。
  • e1 == e2
  • 等于(E2)将返回true。

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

更新

请参阅对象javadoc,基本上您需要将其添加到类中:

代码语言:javascript
复制
@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)
}
票数 2
EN

Stack Overflow用户

发布于 2013-08-02 08:43:33

指定您创建的两个数组,因为getAliase()和所有这些方法都没有被基元类型数据类型所使用,我在这里给出了基本类型的代码,如果我要得到实际数组,我将修改我的代码。

代码语言:javascript
复制
public class ChecktwoArray {


public static void main(String[] args) {
    int a[]={2,5,6};
    int b[]={2,5,6};
    System.out.println(Arrays.equals(a,b));

}

}

如果使用的是另一个数组,则必须重写这些方法,因为如果没有hashcode(),toString()方法将只检查内存地址,而不是内容

代码语言:javascript
复制
@Override
public boolean equals(Object obj) {
    // TODO Auto-generated method stub
    return super.equals(obj);
}

@Override
public int hashCode() {
    // TODO Auto-generated method stub
    return super.hashCode();
}

@Override
public String toString() {
    // TODO Auto-generated method stub
    return super.toString();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18012030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档