黑马程序员技术交流社区

标题: 删除List集合中所有的某个指定对象的方法 [打印本页]

作者: jasonbourne    时间: 2016-2-23 23:07
标题: 删除List集合中所有的某个指定对象的方法
本帖最后由 jasonbourne 于 2016-2-23 23:50 编辑

public class Test {
        /**
         * 需求:删除所有的 java 字符串有哪几种方法?
         */
        public static void main(String[] args) {
                ArrayList<String> list = new ArrayList<>();
                list.add("java");
                list.add("aaa");
                list.add("java");
                list.add("java");
                list.add("bbb");
               
//                method1(list);
               
//                method2(list);
               
                method3(list);   
                System.out.println(list);
        }

        private static void method3(ArrayList<String> list) {
                for (int i = list.size()-1; i >= 0; i--) {
                        if ("java".equals(list.get(i))) {
                                list.remove(i);     //反向遍历的话,就不用改变 i 的值
                        }
                }
        }

        private static void method2(ArrayList<String> list) {
                for (int i = 0; i < list.size(); i++) {
                        if ("java".equals(list.get(i))) {
                                list.remove(i);
                                i--;             //删除之后,size会减1,所以角标要往前移
                        }
                }
        }

        private static void method1(ArrayList<String> list) {
                Iterator<String> it = list.iterator();    //或者用ListIterator,但是不能用forEach,会引发 并发修改异常
                while (it.hasNext()) {
                        if ("java".equals(it.next())) {
                                it.remove();
                        }
                }
        }





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