慎用Arrays.asList和ArrayList部分坑

1、简单的使用Arrays.asList

final List<Integer> integers = Arrays.asList(1, 3);

但是在初始化后我们需要在添加一个元素

integers.add(8);

我们执行代码,却发现报错了
在这里插入图片描述
这是为什么啦,按道理来说这不应该,简单的一个语句怎么会报错啦。
我们就来看下Arrays.asList的源码
在这里插入图片描述
可以发现Arrays.asList使用的new ArrayList<>(a);是自己的内部类,而不是我们平常使用的java.utils中的ArrayList类。这个内部类没有重写add方法,所以我们在使用add方法时提示 UnsupportedOperationException错误。
其实在阿里巴巴的开发手册中是有针对这个给出说明的
在这里插入图片描述
在这里插入图片描述

ArrayList中subList的坑
在这里插入图片描述
注意事项
1、修改原集合的值,会影响子集合值
2、修改原集合的结构,影响子集合
3、修改子集合的值,会影响原集合值
4、修改子集合的结构,影响原集合

  public static void main(String[] args) {
        ArrayList<String> strList = new ArrayList<>();
        strList.add("12333") ;
        strList.add("ceshi") ;
        strList.add("hello world") ;
        strList.add("快了") ;
        strList.add("厉害") ;
        System.out.println(strList);
        List<String> subs = strList.subList(1, 4);
        System.out.println(subs);
        strList.set(3,"books");
        System.out.println(strList);
        System.out.println(subs);
    }

修改原集合的结构(添加元素)

 strList.add("books");

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42324471/article/details/119119174