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