java lists.aslist_java Arrays.asList()

在Java中比如想把一个数组转成集合,通常习惯使用Arrays.asList,但是要小心,数组通过Arrays.asList转成集合后,是不能调用集合的add,remove方法的.不然会抛异常UnsupportedOperationException,

Demo

Integer[] array = {1, 2};

List list = Arrays.asList(array);

list.remove(1);

控制台结果

Exception in thread "main" java.lang.UnsupportedOperationException

at java.util.AbstractList.remove(AbstractList.java:161)

at com.study.webfluxstudy.ArrayListTest.main(ArrayListTest.java:19)

如果新人第一次碰到这个问题可能会感觉很奇怪,add,remove方法不应该是集合的标配吗,怎么会不支持呢?分析下底层源码就知道了

/**

* Returns a fixed-size list backed by the specified array.

*/

@SafeVarargs

@SuppressWarnings("varargs")

public static List asList(T... a) {

return new ArrayList<>(a);

}

Returns a fixed-size list backed by the specified array.很关键的一句话,asList返回的list是固定大小的,那也就是说生成后的集合就不能再添加删除了,也就是不能add,

你可能感兴趣的:(java,lists.aslist)