黑马程序员技术交流社区

标题: 分享一下刚考的一道题,不太明白 [打印本页]

作者: 鹰隼展翼    时间: 2015-7-24 22:16
标题: 分享一下刚考的一道题,不太明白
1.    ArrayList的初始化内容如下:
ArrayList<String> list = newArrayList<>();
      list.add("java");
      list.add("aaa");
      list.add("java");
      list.add("java");
  list.add("bbb");
下面可以删除list中所有的“java”的代码是(  A )  
a)
for (int i = list.size()-1;i >= 0; i--) {
        if("java".equals(list.get(i))){
           list.remove(i);
        }
  }
b)
for (int i =0; i <list.size(); i++) {
        if("java".equals(list.get(i))){
           list.remove(i);
        }
  }
c)  list.remove("java");
d)  list.removeAll("java");


答案是A但是B我还是不太明白的

作者: AllenIverson    时间: 2015-7-24 22:30
for (int i =0; i <list.size(); i++) {
        if("java".equals(list.get(i))){
           list.remove(i);
        }
  }
1.list.size()=4,i=0<4,删除java
2.list.size()=3,i=1<3,删除java
3.list.size()=2,i=2=list.size(),不符合循环条件,跳出循环。
最后集合还有java和aaa两个元素。


作者: 鹰隼展翼    时间: 2015-7-24 23:02
AllenIverson 发表于 2015-7-24 22:30
for (int i =0; i

哦哦原来如此谢谢
作者: Matrix_heima    时间: 2015-7-24 23:06
删的过程集合大小会变,从后向前删除
作者: 鹰隼展翼    时间: 2015-7-24 23:07
Matrix_heima 发表于 2015-7-24 23:06
删的过程集合大小会变,从后向前删除

恩恩谢谢
作者: umbriel    时间: 2015-7-24 23:17
学习了,乍一看A和B一样的,原来是Arraylist size会变。
作者: 黑马的学员    时间: 2015-7-24 23:27
楼上说的有道理




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2