在ArrayList中是用remove应注意ArrayList的变化,
例如:
ArrayList list = new ArrayList();
for (int i = 0; i < 10; i++) {
HashMap hs = new HashMap();
hs.put("put", i + 1);
list.add(hs);
}
for (int i = 0; i < list.size(); i++) {
System.out.println("1=i=" + i);
HashMap hsOld = list.getHash(i);
int put = hsOld.getInt("put");
if (put == 3 || put == 5 || put == 7) {
list.remove(hsOld);或list.remove(i);
i--;
} else {
nlist.add(hsOld);
System.out.println("put===" + put);
}
}
在for循环的是i是自增的变量,在remove一条信息时,
ArrayList的大小已经改变(即list.size()已经改变);
在i大于等于list.size()时,循环跳出,后便的ArrayList不能再执行;
所以必须在remove的同时,执行i--,即i=i-1;
现在才能遍历所有List中的信息。