错误示例代码
public static void main(String[] args) {
List<String> list = Arrays.asList(StringUtils.tokenizeToStringArray("1,2,3,4,5", ","));
list.remove(2);
}
报错内容
Exception in thread "main" java.lang.UnsupportedOperationException at java.util.AbstractList.remove(AbstractList.java:161) at com.leelen.cloud.cb.TestRSASign.main(TestRSASign.java:49)
正确示例代码
改为 new ArrayList(Arrays.asList(StringUtils.tokenizeToStringArray("1,2,3,4", ",")))
public static void main(String[] args) {
List<String> list = new ArrayList(Arrays.asList(StringUtils.tokenizeToStringArray("1,2,3,4", ",")));
list.remove(2);
System.out.println(list);
}
输出结果
[1, 2, 4]
原因
Arrays.asList 函数返回的是 Arrays的内部类,而不是 java.util 包下的 ArrayList 类。
两者的共同点: 同样继承自 AbstractList 类。