Java静态ArrayList <object>删除问题</object>

时间:2012-05-18 09:55:28

标签: java

我有static ArrayList<Batch>。我想删除哪个对象包含productcode

这是我的批处理实体

public class BatchControl implements Parcelable{
  private String productCode;
  private String lotNumber;
  private String batchSerialNumber;
  private double quantity   ;
  private int sequence;
  private String productName;
  private String type;
  //Setter & getter
 }

这是我的删除对象

  static ArrayList<String> lstString = new ArrayList<String>();
  for (Iterator<Batch> i = lstString.iterator(); i.hasNext(); ) {
        Batch value=(Batch )i.next();
        if(value.getSequence() == iVal) {
            lstString.remove(value);
        }
    }

iVal是Android TableLayout包含行号。

        String number = txtNumber.getText().toString();
    iVal = Integer.parseInt(number);

但它没有删除哪个对象有iValue。因为resoan静态arraylist所以,每个&amp;每当我删除大小将改变。

请帮帮我。

提前致谢。

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:1)

在列表中使用Iterator时,您可以使用Iterator.remove()安全地删除当前元素(关于列表中的位置或索引)。

for (Iterator<Batch> i = lstString.iterator(); i.hasNext(); ) {
    Batch value=(Batch )i.next();
    if(lstBatCtrl.get(k).getSequence() == iVal) {
        i.remove();
    }
}

考虑到如果remove()上有并发修改,则static List上使用List可能会产生问题。引用Iterator.remove()的javadoc:

  

如果是底层的,则未指定迭代器的行为   在迭代以任何方式进行时,都会修改集合   除了通过调用此方法

答案 2 :(得分:1)

使用以下代码:

  for (Iterator<Batch> i = lstString.iterator(); i.hasNext(); ) {
        Batch value=(Batch )i.next();
        if(value.getSequence() == iVal) {
            i.remove();
        }
    }