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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

ArrayList<String> list = new ArrayList<>();
                list.add("java");
                list.add("aaa");
                list.add("java");
                list.add("java");
        list.add("bbb");
for (int i =0; i < list.size(); i++) {
                        if("java".equals(list.get(i))){
                                list.remove(i);

                        }
        }

5 个回复

倒序浏览
没看懂想问啥。。。。飘过。。
回复 使用道具 举报
首先就这个问题分析,当你遍历的时候,从第0个元素开始,移除了第0个元素"java",随后aaa,java,java变成了第0,1,2个元素,接下来遍历的索引是1,就是拿到的是原来list里面索引为2的java,移除掉。接下来数组变成aaa,java,并且索引为0,1,当下一次循环的时候,索引为2,就不再进去了。要改正这个程序,应该这样:

public class Main {
    public static void main(String[] args) {

        ArrayList<String> list = new ArrayList<String>();
        list.add("java");
        list.add("aaa");
        list.add("java");
        list.add("java");

        for (int i = list.size(); i >= 0; i--) {
            list.remove("java");
        }
        System.out.println(list);
    }

}
回复 使用道具 举报
漏掉的是第二个“java”,移除元素后应该变量i--;
ArrayList<String> list = new ArrayList<>();
                list.add("java");
                list.add("aaa");
                list.add("java");
                list.add("java");
                list.add("bbb");
for (int i =0; i < list.size(); i++) {
                        if("java".equals(list.get(i))){
                                list.remove(i);
                                i--;
                        }
        }
回复 使用道具 举报
楼上说的对
回复 使用道具 举报
孤单背影 来自手机 中级黑马 2015-11-3 21:25:59
地板
直接用迭代器不是更省脑子?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马