如何在java中查找两个arraylist之间的差异



我有两个数组列表,其中包含许多模型对象。我想找到这些数组列表的区别。当我使用字符串而不是模型时,我与集合框架中的 removeall 函数有所不同。但是对于模型对象,它不起作用。请任何人帮助我

在您的

自定义对象中实现equalshashCode,您可以使用与String相同的方法。

好吧,removeAll 方法是一个通用库方法,它对模型类一无所知。 所以如果你考虑一下,它怎么知道哪些是"相同的"?

简短的回答是,您需要重写Model类中的equals()方法,因为这是检查所基于的。 对于您希望被视为相同的任何一对模型实例,实现应返回 true - 仅当它们在内存中是同一对象时,默认继承行为才会返回 true。 (与往常一样,当您覆盖equals()时,您也必须覆盖hashCode())。

String类已经覆盖了equalshashCode方法的版本,因此您可以使用remove()方法。如果必须在集合(List or Set)中使用类,则必须在类中重写这些方法,否则它将使用这些方法的默认实现。

如果两个对象在逻辑上相等,这意味着它们的hashCode必须相等并且满足 equals()。

要比较两个ArraList,您需要两个比较两个对象。在您的情况下,它是您的模型对象,为此您需要覆盖等于方法。试试这个代码 @Override 公共布尔值等于(对象比较Obj) { 如果(此 == 比较 Obj) 返回真;

    if (compareObj == null) 
        return false;
    if (!(compareObj instanceof MyModel)) 
        return false;
    MyModel model = (MyModel)compareObj; 
    return this.name.equals(model.name); // Are they equal?
    }
    @Override
    public int hashCode()
    {
    int primeNumber = 31;
    return primeNumber + this.name.hashCode();
        return 0;
    }

最新更新