Java 删除SparseBooleanArray上标记的列表元素

Java 删除SparseBooleanArray上标记的列表元素,java,list,iterator,Java,List,Iterator,因此,基本上我在列表中有一系列位置,必须删除这些位置。我们都知道不能对循环使用,因为一旦删除第一个循环,其余项目的位置就会更新,因此解决方案是使用迭代器 MySparseBooleanArray具有列表中位置的键和**值(布尔值),以指示是否应删除它 我怎样才能移除它们 编辑: 正如OP所解释的,您必须使用迭代器 以下是实际工作代码。在一个更简单的场景中,您将只部署内部循环: ArrayList<ArrayList<Object>> fldData; // M

因此,基本上我在
列表中有一系列位置,必须删除这些位置。我们都知道不能对循环使用
,因为一旦删除第一个循环,其余项目的位置就会更新,因此解决方案是使用
迭代器

My
SparseBooleanArray
具有列表中位置的键和**值(布尔值),以指示是否应删除它

我怎样才能移除它们

编辑:


正如OP所解释的,您必须使用迭代器

以下是实际工作代码。在一个更简单的场景中,您将只部署内部循环:

ArrayList<ArrayList<Object>> fldData;       // Mass data
        
/** De-clutter the mass data arrays according to the SparseBooleanArray */
public void de_clutter(SparseBooleanArray sba) {
    for (ArrayList<Object> objArray: fldData) {
        int ix = -1;
        for (Iterator<Object> iter = objArray.iterator(); iter.hasNext(); ) {
            iter.next();
            ix++;
            if (!sba.get(ix, true)) { iter.remove(); }
        }
    }
}
     
ArrayList fldData;//海量数据
/**根据SparseBooleanArray对海量数据阵列进行去杂波处理*/
公共空间杂乱(SparseBooleanArray sba){
for(ArrayList-objArray:fldData){
int ix=-1;
for(迭代器iter=objArray.Iterator();iter.hasNext();){
iter.next();
ix++;
如果(!sba.get(ix,true)){iter.remove();}
}
}
}

您可以使用for循环,在删除元素时只需调整递增变量。我假设所讨论的语言是Java…?您可以提供一些代码,以便其他人可以更清楚地了解您迄今为止的尝试是什么是,语言是Java。还进行了更新,以提供更直观的解释。实际上,我正在尝试删除android上上下文操作栏上的选定项目,但找不到如何删除。其他帖子只是说如何获取选中的项目,所以这是我查看
文档的地方,看起来SparseBooleanArray有一个
delete
方法,它接受
值,并删除该位置的值。
ArrayList<ArrayList<Object>> fldData;       // Mass data
        
/** De-clutter the mass data arrays according to the SparseBooleanArray */
public void de_clutter(SparseBooleanArray sba) {
    for (ArrayList<Object> objArray: fldData) {
        int ix = -1;
        for (Iterator<Object> iter = objArray.iterator(); iter.hasNext(); ) {
            iter.next();
            ix++;
            if (!sba.get(ix, true)) { iter.remove(); }
        }
    }
}