Java-常见错误集锦

  • 遍历时从列表里删除元素
    • 1测试代码
    • 2输出结果
    • 3原因分析

1.遍历时,从列表里删除元素

1.1.测试代码:

    /** * 遍历时,从列表里删除元素 */
    private static void testListRemove() {
        List<String> list = new ArrayList(Arrays.asList("a", "b", "c", "d"));
        //错误姿势:使用for循环
        try {
            for (String s : list) {
                if (s.equals("a"))
                    list.remove(s);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        //正确姿势:使用迭代器
        Iterator<String> iter = list.iterator();
        while (iter.hasNext()) {
            String s = iter.next();
            if (s.equals("a")) {
                iter.remove();
            }
        }
        System.out.println(JSON.toJSONString(list));
    }

1.2.输出结果:

这里写图片描述

1.3.原因分析:

当一个元素被删除时,列表的指针改变了。所以想要在循环内利用指针删除多个元素是无法正常进行的。

你可能感兴趣的:(Java-常见错误集锦)