
几个常见的误区
Arrays.asList()
Arrays.asList()生成的list无法执行add,remove操作
1 2 3 4 5 6 7 8
|
public static void (String[] args) { String[] ars = new String[]{"a","b"}; List<String> l = Arrays.asList(ars); System.out.println(l.toString()); l.add("c"); System.out.println(l.toString()); }
|
运行后报错
1 2 3 4 5
|
[a, b]Exception in thread "main" java.lang.UnsupportedOperationException at java.util.AbstractList.add(AbstractList.java:148) at java.util.AbstractList.add(AbstractList.java:108) at com.fmyblack.util.collection.ListDemo.main(ListDemo.java:13)
|
这是因为Arrays.asList()所产生的list其实是Arrays的内部类:java.util.Arrays$ArrayList,并不是我们熟知的java.util.ArrayList。`
java.util.Arrays$ArrayList继承了AbstractList类但并没有重载add()方法,而AbstractList的add方法如下:
1 2 3
|
public void add(int index, E element) { throw new UnsupportedOperationException(); }
|
因此执行l.add("c")时会报java.lang.UnsupportedOperationException错误。
remove方法同理。
近期评论