我有一个具有全局范围的空对象的arraylist。我需要从不同的活动向arraylist添加项目,也不要添加已经存在的项目(没有重复项)。
当项目从一个从意图中收到项目的活动添加到列表中时,我遇到了一个问题,即使列表中已包含该项目,该项目也会被添加。但是,该项目仅在活动开始时添加一次 但是,在完成活动并再次启动它时,会再次添加该项目,从而创建重复项。
我只是使用arraylist.contains(object)来检查对象是否存在于列表中。有什么方法我不能得到重复或删除它们吗?
答案 0 :(得分:2)
答案 1 :(得分:1)
您需要覆盖自定义类的equals方法。
e.g。
public boolean equals(Object c) {
if(c !instanceof CustomClass) {
return false;
}
// TODO change to your type and change the methods
CustomClass that = (CustomClass)c;
return this.id.equals(that.getId()) && this.id.equals(that.getId());
}
然后你可以调用list.contains(obj)来查看列表是否已经包含一个相等的对象。将CustomClass
更改为您需要的类型,如果需要,您可以添加更多检查。
更好的解决方案是使用Sets
。查看here了解更多信息。