所以基本上我在List
有一系列必须删除的职位。我们都知道,一旦删除第一个,我们就无法使用for
循环原因,其余项目的位置会更新,因此解决方案正在使用Iterator
我的SparseBooleanArray
在列表中的位置键,**值(布尔值)表示是否应删除它。
如何删除它们?
编辑:
// list is a List
list.get(0) // first element
list.get(1) // second element
list.get(2) // third element
// sba is a SparseBooleanArray
// the first element of the sea indicates that the list.get(1) should be deleted
sba.keyAt(0) // = 1
sba.valueAt(0) // = true
答案 0 :(得分:0)
如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(); }
}
}
}