一.背景:使用工具类 Arrays.asList()把数组转换成集合时,使用其修改集合相关的方 法,它的 add/remove/clear 方法会抛出 UnsupportedOperationException 异常. 二.分析:既然是List为何不能进行增删改的操作? 1.Arrays.asList(str)调用的是Arrays类中的asList方法,该方法返回一个ArrayList对象. 2.进入asList方法发现这个ArrayList是Arrays的一个继承AbstractList的静态…
在项目中对List进行操作时报错java.lang.UnsupportedOperationException,后来发现操作的List是由数组转换而成的,通过看源码发现问题,并写测试程序如下. 代码块: public class ListTest { public static void main(String[] args) { String[] array = {"1","2","3","4","5"}…
问题: 使用工具类Arrays.asList()方法把数组转换成集合时,不能使用修改集合相关的方法,比如add,remove.这个ArrayList是Arrays类自己定义的一个内部类!这个内部类没有实现add().remove()方法,而是直接使用它的父类 的相应方法.而父类中的add()和remove()是直接抛出异常的! 源码: 解决方法: 总结: 1.Arrays.asList()底层其实还是数组; 2.如果使用了Arrays.asList()的话,最好不要使用其集合的操作方法; 3.…
Arrays.asList() 只支持遍历和取值 不支持增删改 继承至AbstractList内部类…
List<String> list = Arrays.asList("A B C D E F G H I J K L ".split(" ")); 1. java中Arrays.asList生成的集合是属于Arrays中内部类,这个内部类不支持各种 removeAll  retainAll 操作,会抛出 java.lang.UnsupportedOperationException 异常.因为Arrays.asList就表示生成固定大小的数组的集合,任何…
使用 Arrays.asList("str1", "str2")生成的List,不能进行remove.add操作,会产生异常java.lang.UnsupportedOperationException. List<String> list = Arrays.asList("str1", "str2"); list.add("str3"); System.out.println(list); 原…
以前一直很奇怪为什么Arrays.asList的数组不能插入新的数据,后来看了源码发现是因为内部是一个final的数组支持起来的Arraylist,下面贴入源码与分析. 1.先看Arrays的方法 我们看到Arrays.aslist 返回一个new ArrayList<>(a); @SafeVarargs public static <T> List<T> asList(T... a) { return new ArrayList<>(a); } 2.我们按…
Java中,可以使用Arrays.asList(T... a)方法来把一个数组转换为List,返回一个受指定数组支持的固定大小(注意是固定大小)的列表.此方法同 Collection.toArray()一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁.返回的列表是可序列化的,并且实现了 RandomAccess. 此方法还提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素: List<String> stooges = Arrays.asL…
这个异常遇到了才知道坑这么大,坑爹的方法. private String[] otherUserFromArray = new String[]{“3”, “4”, “发放”}; List<String> userFromList = Arrays.asList(otherUserFromArray); 在使用 Arrays.asList()转化数组成为list的时候,生成了ArrayList, 表面上看是 java.util.ArrayList, 实际上是Arrays的内部类 ArrayLi…
Arrays工具类提供了一个方法asList, 使用该方法可以将一个变长参数或者数组转换成List . 其源代码如下: @SafeVarargs public static <T> List<T> asList(T... a) { return new ArrayList<>(a); } 问题发现 根据上述方法的描述,我们先来编写几个例子: public class ArrayExample { public static void main(String[] args…