在java中,把数组转换成List集合,List<String> list = Arrays.asList("a","b","c"); 这样得到的List的长度是不能改变的。当你向这个List添加或删除一个元素时(例如 list.add("d");)程序就会抛出异常(java.lang.UnsupportedOperationException)。怎么会这样?
只需要看看asList()方法是怎么实现的就行了。
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
返回了一个ArrayList对象。这个ArrayList不是java.util包下的,而是java.util.Arrays.ArrayList,显然它是Arrays类自己定义的一个内部类!这个内部类没有实现add()、remove()方法,而是直接使用它的父类AbstractList的相应方法。而AbstractList中的add()和remove()是直接抛出java.lang.UnsupportedOperationException异常的!
总结: 如果你的List只是用来遍历,就用Arrays.asList()吧!
如果你的List还要添加或删除元素,还是乖乖地new一个java.util.ArrayList,然后一个一个的add()添加元素吧!