您的位置:首页 > 其它

循环删除list中多个元素

2014-09-25 21:34 183 查看
错误的做法:

for(int i= 0;i<list.size();i--){
for(int j= 0; j<list2.size();j++){
if(list.get(i).contains(list2.get(j))){
list.remove(i);
}
}
}
结果:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1


因为在你删除元素的同事list.size()在变小,这样就会照成越界。

正确做法:

//因为要删除list里面的多个的值,所以会涉及到一个问题,就是当你删除掉下标为1的元素时,

  //原来下标为2的元素会自动改变自己的下标为1,后面的元素依次把自己的下标值减一

  

  //鉴于这种情况,我们想循环删除list中的多个元素的话,就必须从后往前删,这样保障了你删除了一个元素之后,

  //list中元素的下标移动不会影响到那些需要删除,但是还未删除到的以元素

public class ListDel {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
list.add("7");
list.add("8");
list.add("9");
list.add("10");
List<String> list2 = new ArrayList<String>();
list2.add("3");
list2.add("7");
list2.add("9");

for(int i= list.size()-1;i>=0;i--){
for(int j= 0; j<list2.size();j++){
if(list.get(i).contains(list2.get(j))){
list.remove(i);
}
}
}

System.out.println(list.toString());
}
}
结果:[1, 2, 4, 5, 6, 8, 10]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: