A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© azraeljia 中级黑马   /  2016-6-11 21:16  /  807 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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,求大神解释一下错误答案哪里错误了.谢谢

7 个回复

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

谢谢,貌似我忽略了会移动了
回复 使用道具 举报

谢谢,忘了会移动这事了
回复 使用道具 举报
lifeiwangyue 发表于 2016-6-11 22:17
来学习下  正序遍历 角标要--  倒着就不用了  根据对象删除   不需要操作角标 ...

嗯嗯 知道了 谢谢啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马