尝试创建RetainAll方法

时间:2019-02-23 19:46:21

标签: java collections

我正在尝试创建一个RetainAll方法,并且在搜索了所有论坛之后,我发现在我的特定情况下没有任何帮助。我遇到的问题是,在运行程序时,不是将所有元素保留在指定列表中并删除所有其他元素,而是将最后一个元素保留在初始列表中。

public default boolean retainAll(Collection<?> c) {
    boolean modified=false;
    int index =0;

    for(Object e : this) {
        if(c.contains(e)==true) {
        }
        else if(c.contains(e)==false) {
            index=this.indexOf(e);

            this.remove(index);
            modified = true;
        }
    }

    return modified;
}

public default boolean remove(Object e) {
    if (indexOf(e) >= 0) {
        remove(indexOf(e));
        return true;
    }
    else
        return false;
}

我只是不了解如何删除最后一个元素。

1 个答案:

答案 0 :(得分:0)

您正在遍历集合时对其进行修改。通常这是导致不幸的秘诀。

对于标准集合,安全的方法是使用显式迭代器,并使用迭代器的'remove'方法删除最近返回的条目。

如果这是您自己的集合实现,则应确保该模型也适用。