使用Arrays.asList()遇到的坑
1.使用Arrays.asList()的坑
1)使用Arrays.asList()将数组转化为List列表进行操作出现异常
出现 java.lang.UnsupportedOperationException
直接使用Arrays.asList将数组转化为List, 对List进行操作(remove, set,add等方法)时,会出上述抛异常
2)出现异常原因
因为Arrays下的ArrayList是位于java.util.arrays.ArrayList, 而一般的ArrayList是位于java.util.ArrayList。两者均是继承AbstractArrayList,在AbstractArrayList中,对remove, set, add等操作的方法都是抛出异常,前者Arrays下的ArrayList没有实现AbstractList中的这些方法,而java.util.ArrayList重写了这些方法,所以直接对Arrays.aList()转换的List进行remove, set,add等操作会抛异常。
3)可以下面这样使用
将使用Arrays.asList()转化的List列表,重新创建为List, 或者在创建List集合后再进行初始化数据
List<String> list = Arrays.asList(new String []{"11", "222", "33", "444","55"});
List<String> newList = new ArrayList<>(list);
System.out.println("newList: "+newList.toString()); //output: newList: [11, 222, 33, 444, 55]