我有一个包含多个变量的对象的arraylist。
我生成新对象,并希望有条理地检查在arraylist中是否存在任何具有相同内容的对象。
不幸的是,Arraylist.contains(对象)和Arraylist.equals(对象)只检查同一对象的引用,而不是具有相同组件的对象。我希望它像一个更简单的String.contains(“x”)那样。
如何覆盖arraylist.equals / arraylist.contains以在我的Android活动中执行我想要的操作?
答案 0 :(得分:2)
您可以创建自己的继承自ArrayList的类,并为两者定义自己的定义。
public class myArrayList<E> extends ArrayList<E> {
@Override
public Boolean equals(object o) {
//Your implementation
}
@Override
public Boolean contains(object o) {
//Your implementation
}
}
然后用MyArrayList类型替换您的ArrayList类型。
或者您可以在某个地方创建一个接受2个ArrayLists的方法,并告诉您它们是否相等,或者是否包含另一个。
public static Boolean areArrayListsEqual(ArrayList a, ArrayList b) {
//Check if they are equal
}
答案 1 :(得分:2)
ArrayList的equals(Object o)和contains(Object o)方法都在其中的每个对象上调用equals方法。因此,如果你只是进行浅层比较,那是因为你放在ArrayList中的对象没有覆盖equals方法来正确比较它自己的组件。