2

我有一个包含多个变量的对象数组列表。

我生成新对象并希望有条件地检查以查看在 arraylist 中是否不存在具有相同内容的对象。

不幸的是, Arraylist.contains(object) 和 Arraylist.equals(object) 都只检查同一对象的引用,而不是具有相同组件的对象。我希望它表现得像一个更简单的 String.contains("x") 。

如何覆盖 arraylist.equals/arraylist.contains 以在我的 android 活动中执行我想要的操作?

4

2 回答 2

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 个 ArrayList 的方法,并告诉您它们是否相等,或者一个是否包含另一个。

public static Boolean areArrayListsEqual(ArrayList a, ArrayList b) {
     //Check if they are equal
}
于 2012-11-16T00:15:13.723 回答
2

ArrayList 的 equals(Object o) 和 contains(Object o) 方法都在其中的每个对象上调用 equals 方法。因此,如果您只是进行浅比较,那是因为您放入 ArrayList 的对象没有覆盖 equals 方法以正确比较其自己的组件。

于 2012-11-16T01:32:03.307 回答