1:错误代码 :
for (int i=0;i<allCustomers.size();i++) {
Customer user=allCustomers.get(i);
if (user.getUserState().equalsIgnoreCase("TRANSFER")) {
allCustomers.remove(user);
}
}
结果不会删除所有须要删除的数据
原因:List每remove掉一个元素以后,后面的元素都会向前移动,此时如果执行i=i+1,则刚刚移过来的元素没有被读取。
2:解决方式
每移动一次就向回移动一次
for (int i=0;i<allCustomers.size();i++) {
Customer user=allCustomers.get(i);
if (user.getUserState().equalsIgnoreCase("TRANSFER")) {
allCustomers.remove(user);
i--;
}
}
其它方式:
1.倒过来遍历list
Java代码
for (int i = list.size()-1; i > =0; i--) {
if (((String) list.get(i)).startsWith("abcde")) {
list.remove(i);
}
}
2.使用iterator.remove()方法删除
Java代码
for (Iterator it = list.iterator(); it.hasNext();) {
String str = (String)it.next();
if (str.equals("chengang")){
it.remove();
}
}
Java代码
for (int i = list.size()-1; i > =0; i--) {
if (((String) list.get(i)).startsWith("abcde")) {
list.remove(i);
}
}
2.使用iterator.remove()方法删除
Java代码
for (Iterator it = list.iterator(); it.hasNext();) {
String str = (String)it.next();
if (str.equals("chengang")){
it.remove();
}
}