java细节之list删除

阅读更多
       List al = new ArrayList();
       初始化方案1: al = Arrays.asList("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13");
       初始化方案2: al = Lists.newArrayList("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13");
        al.removeIf((t)->Integer.valueOf(t)%2==1);

al.forEach((n) -> {
            System.out.println(n);
        });

测试结果:
使用初始化方案1会报错:
java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(AbstractList.java:161)
at java.util.AbstractList$Itr.remove(AbstractList.java:374)
at java.util.Collection.removeIf(Collection.java:415)
使用初始化方案2正常


原因:

List al = new ArrayList();
al = Arrays.asList("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13");
其Arrays.asList返回的对象也交做ArrayList但是其内部静态类,其并不不支持删除

你可能感兴趣的:(java)