黑马程序员技术交流社区

标题: 关于ArrayList删除的问题.. [打印本页]

作者: azraeljia    时间: 2016-6-11 21:16
标题: 关于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,求大神解释一下错误答案哪里错误了.谢谢


作者: tianzhu2725    时间: 2016-6-11 21:44
D 答案removeAll()的参数为一个集合 不能为字符串,   C答案  知识删除了其中一个"java"  B答案是从0开始遍历的,删除了第一元素的花 原来第二个元素的索引就到了第一位置了,改为list.remove(i--)就可以了,希望对你有用!
作者: wsl123456    时间: 2016-6-11 21:44
"Java" "Java" "Java" "Java" "bbb"
作者: ancheng    时间: 2016-6-11 21:49
  1. b、当删掉一个元素时,后面的元素向前移动,而下标向后移动一位,这样的话,就有一个元素没有检测到
  2. c、这样只能删掉一个元素
  3. d、这个方法在1.6中好像没有,但是我在1.8中查到了该方法,但是参数是一个集合
复制代码

作者: lifeiwangyue    时间: 2016-6-11 22:17
来学习下  正序遍历 角标要--  倒着就不用了  根据对象删除   不需要操作角标
作者: azraeljia    时间: 2016-6-15 21:12
tianzhu2725 发表于 2016-6-11 21:44
D 答案removeAll()的参数为一个集合 不能为字符串,   C答案  知识删除了其中一个"java"  B答案是从0开始遍 ...

谢谢,貌似我忽略了会移动了
作者: azraeljia    时间: 2016-6-15 21:13
ancheng 发表于 2016-6-11 21:49

谢谢,忘了会移动这事了
作者: azraeljia    时间: 2016-6-15 21:17
lifeiwangyue 发表于 2016-6-11 22:17
来学习下  正序遍历 角标要--  倒着就不用了  根据对象删除   不需要操作角标 ...

嗯嗯 知道了 谢谢啊




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