比较对象android

时间:2014-03-27 01:42:56

标签: java android compare equals

我正在编写应用程序,并且在某些时候我必须比较两个arraylist或两个对象,我定义了一个名为Article的类并编写此代码来比较两篇文章

    public boolean aredifferent(){

    Article art1 = new Article();
    art1.setBm(null);
    art1.setDesc("he");
    art1.setImagelink("www");
    art1.setLink("www");
    art1.setTitle("ti");

    Article art2 = new Article();
    art2.setBm(null);
    art2.setDesc("he");
    art2.setImagelink("www");
    art2.setLink("www");
    art2.setTitle("ti");
    boolean diff;
    if(art1.equals(art2)){
        diff = false;
    }else{
        diff = true;
    }


    return diff;

}

问题我已经知道这种方法正在回归,我不明白为什么。有任何想法吗?是否有不同的方法来比较Android中的对象?

谢谢

2 个答案:

答案 0 :(得分:0)

检查该类的equals()实施方式,最好的猜测是您没有覆盖equals()方法,而是依赖于Object的实现

答案 1 :(得分:0)

我假设您没有为Article类定义自定义“equals”方法?如果是这样,art1.equals(art2)始终返回false的原因是因为Java中的默认equal方法通过检查两个对象在内存中是否具有相同的地址来工作。

由于您要创建两个不同的Article个实例,因此它们显然不会共享相同的内存地址,因此equals将始终返回false。您可以通过执行类似art1.equals(art1)的操作来对此进行测试 - 在这种情况下,您的方法按预期运行。

要解决此问题,您需要覆盖equals类中的Article方法,并创建一个显式检查Article类中字段的新版本。 (您还应该定义使用相同字段的hashCode的自定义版本。)