String 转 List<String> 报错啦

现象

1
2
3
4
5
6
7
8
9
10
11
@Test
public void test08() {
// String 转 List<String>
String a = "00000615=2\r\n00000615=3\r\n00000615=4\r\n";

List<String> alist = Arrays.asList(a.trim().split("\r\n"));
alist.remove(0);

List<String> blist = new ArrayList(Arrays.asList(a.trim().split("\r\n")));
blist.remove(0);
}
1
2
java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(AbstractList.java:161)

原因

点进 asList 源码:

1
2
3
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}

注意此处new的ArrayList, 不是平时用的ArrayList. 他引入的路径不一样. 此处创建的是Arrays的一个内部静态类的对象. 而此处ArrayList不存在add和remove方法. 所以增删都会报错!