您的位置:首页 > 其它

在一个循环中删除一个列表中的元素

2015-06-26 11:06 246 查看
直接遍历删除的时候一般会写

ArrayList<String> list = new ArrayList<String>(Arrays.asList("a","b","c","d"));

for(int i=0;i<list.size();i++){

list.remove(i);

}
System.out.println(list);

输出:[b, d]

这里面本意可能是全部删除,这里还剩下俩个

当一个元素被删除时,列表的大小缩小并且下标变化,所以当你想要在一个循环中用下标删除多个元素的时候,它并不会正常的生效。

正确:

    ArrayList<String> list = new ArrayList<String>(Arrays.asList("a","b","c","d"));

        for(int i=0;i<list.size();i++){

            if(list.remove(i)!=null){

                i--;

            }

            

        }

        System.out.println(list);

输出:[]

或者是迭代后删除:

ArrayList<String> list = new ArrayList<String>(Arrays.asList("a", "b",

                "c", "d"));

        Iterator<String> iter = list.iterator();

        while (iter.hasNext()) {

            String s = iter.next();

            if (s.equals("a"))

                iter.remove();

        }

        System.out.println(list);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息