一般使用Arrays.asList()方法,但是用该方法转化的集合不能add和remove
/**
* 添加元素时会抛java.lang.UnsupportedOperationException异常
*/
@Test
public void testAdd() {
List<String> list1 = Arrays.asList("a,b,c,d,e,f".split(","));
list1.add("xx");
}
原因:
这个ArrayList不是java.util包下的,而是java.util.Arrays.ArrayList,显然它是Arrays类自己定义的一个内部类!这个内部类没有实现add()、remove()方法,而是直接使用它的父类AbstractList的相应方法。AbstractList中定义的add和remove方法直接抛出异常
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {
...
public void add(int index, E element) {
throw new UnsupportedOperationException();
}
public E remove(int index) {
throw new UnsupportedOperationException();
}
...
}
正确的写法:
@Test
public void testAdd() {
List<String> = list1 = new ArrayList<>(Arrays.asList("a,b,c,d,e,f".split(",")));
list1.add("xx");
System.out.println(list1);//[a, b, c, d, e, f, xx]
}