出錯代碼段:
String[] ids=approveId.split(",");
List<String> list=Arrays.asList(ids);
HashSet h = new HashSet(list);
list.clear();
list.addAll(h);
ids=(String[]) list.toArray();
常常使用Arrays.asList()後調用add,remove這些method時出現java.lang.UnsupportedOperationException異常。這是由於:
Arrays.asList() 返回java.util.Arrays$ArrayList, 而不是ArrayList。
Arrays$ArrayList和ArrayList都是繼承AbstractList,remove,add等
method在AbstractList中是默認throw UnsupportedOperationException而且不作任何操作。
ArrayList override這些method來對list進行操作,但是Arrays$ArrayList沒有override remove(int),add(int)等,所以throw UnsupportedOperationException。
解決方法是使用Iterator,或者轉換爲ArrayList
List list = Arrays.asList(a[]);
List arrayList = new ArrayList(list);
修改後代碼段:
String[] ids=approveId.split(",");
List<String> list=Arrays.asList(ids);
List arrayList = new ArrayList(list);//這裏必須要轉成ArrayList,否則在執行.clear()時會報錯。
HashSet h = new HashSet(arrayList);
arrayList.clear();
arrayList.addAll(h);
ids=(String[]) arrayList.toArray();