我有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;每当我删除大小将改变。
请帮帮我。
提前致谢。
答案 0 :(得分:4)
您应该使用i.remove(),请参阅http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Iterator.html
答案 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();
}
}