黑马程序员技术交流社区

标题: 一道关于集合操作的题 [打印本页]

作者: wanghua1    时间: 2015-7-24 23:57
标题: 一道关于集合操作的题
ArrayList<String> list = new ArrayList<>();
                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");


ArrayList<String> list = new ArrayList<>();
                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");
b答案错误的原因:随着循环进行, list.size()也在变化,如果遇到Java,删除之后集合的所有元素前移动一位,但是i++不会停,Java后面的一个元素就没有进行判断,导致结果删不完全。
作者: LiuWei2015    时间: 2015-7-27 00:36
抢个沙发




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