删除SparseBooleanArray上标记的List元素

时间:2014-05-14 16:54:21

标签: java list iterator

所以基本上我在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  

1 个答案:

答案 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(); }
        }
    }
}