一般情况下,我们将集合A中的内容全部添加到集合B,是这样的:
List<String> list1 = new ArrayList<>();
List<String> list2 = new ArrayList<>();
list1.add("1");
list2.add("2");
list1.addAll(list2);
当然,这样做之后,运行程序也是完全没有问题的,但是当我们用这种骚操作时:
List<String> list1 = Arrays.asList("1","2","3");
List<String> list2 = Arrays.asList("4","5","6");
list1.addAll(list2);
就会报出如下错误
这种由数组转换而来的集合,是我们很多人喜欢贪方便而常有的操作,那么我们来去看看asList的源码,看看错误在哪
从源码的注释中可以看到,调用asList方法返回的是一个固定大小的集合,所以再往里添加元素必然会报错,那么什么才是正确的操作呢