在List里放了好多数据,要根据条件进行删除,感觉这了太简单了,马上进行编码。
public static void main(String[] args) {
List list = new ArrayList();
list.add(1);
list.add(1);
list.add(1);
list.add(1);
list.add(1);
list.add(1);
for(int i = 0; i < list.size(); i++) {
if((Integer)list.get(i) == 1) {
list.remove(i);
}
}
System.out.println("list还剩的个数为-->" + list.size());
}
没想到,运行后的结果很不理想。
结果为: list还剩的个数为-->3
细想一下,发现不对,因为当删除一个元素之后,list的个数就会减少1,那么这样原来位于第2位的元素就会成第1个,而循环已经跳过了第一个,导致最后没有删 干净,还剩下3个。应该这样实现,先从最后一个删起,这样就能删干净了。
修改后代码如下:
public static void main(String[] args) {
List list = new ArrayList();
list.add(1);
list.add(1);
list.add(1);
list.add(1);
list.add(1);
list.add(1);
for (int i = list.size() - 1; i >= 0; i--) {
if ((Integer) list.get(i) == 1) {
list.remove(i);
}
}
System.out.println("list还剩的个数为-->" + list.size());
}
运行结果如下:
list还剩的个数为-->0