黑马程序员技术交流社区
标题:
正着遍历list,边遍历边删除,会漏删元素问题
[打印本页]
作者:
lu89418
时间:
2014-3-18 16:33
标题:
正着遍历list,边遍历边删除,会漏删元素问题
正着遍历list,边遍历边删除,会漏删元素。使用增强for循环会报错,使用普通for循环,list.size()是变的,会角标溢出。求解决
作者:
lu89418
时间:
2014-3-18 16:36
@Test
public void listTest1(){
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
for(String temp : list){
System.out.println(temp);
}
System.out.println("---------------------------------");
int length = list.size();
for(int i = 0 ;i<=length-1 ; i++){
list.remove(0);
}
for(String temp : list){
System.out.println(temp);
}
}
如果不使用变量记录list.size(),每次循环list.size()会变小所以删不全
作者:
水蓝
时间:
2014-3-18 16:39
用迭代器iterator,示例代码:
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()) {
/*这边加if判断条件*/
iterator.remove();
}
复制代码
作者:
lu89418
时间:
2014-3-18 16:39
正着遍历,有条件的删除list中的元素
@Test
public void listTest1(){
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
for(String temp : list){
System.out.println(temp);
}
System.out.println("---------------------------------");
int length = list.size();
int tem = 0;
for(int i = 0 ;i<=length-1 ; i++){
if(!"3".equals(list.get(tem))){
list.remove(tem);
}else{
tem++;
}
}
for(String temp : list){
System.out.println(temp);
}
}
作者:
水蓝
时间:
2014-3-18 16:40
水蓝 发表于 2014-3-18 16:39
用迭代器iterator,示例代码:
这种循环中,进行添加、删除动作。最容易想到的就是迭代器了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2