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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 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();
                        }
                }
        }

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马