情景
現在有個數組,比如:String[] array = new String[]{"1","2","3"};
我們想要往這個數組中添加或刪除元素。
思路
我們知道,數組是沒有add,remote這些method的。
所以我們需要將數組轉換為list集合,list有這些功能啊,操作完之后,再將list轉換為數組即可。沒毛病!!
操作
public class test { public static void main(String[] args) { String[] array = new String[]{"1","2","3"}; List<String> list1 = Arrays.asList(array); // 我們想要的操作 list1.add("4"); list1.remove("1"); // 操作結束后,再轉為數組 Object[] array2 = list1.toArray(); for(Object a: array2) { System.out.println(a); } } }
這段代碼,看着沒毛病。運行~~~
在list1.add("4"); 這一步就報錯了。不支持這個操作。同樣,remove也不支持咯。
原因
Arrays.asList(String[])這種方式只能轉為Arrays$ArrayList類,Arrays$ArrayList和ArrayList都是繼承AbstractList,AbstractList類是不操作remove,add等method的,所以Arrays$ArrayList 也就不支持這些方法,默認throw UnsupportedOperationExceptiony異常。而ArrayList重寫了remove,add等method,所以可以使用這些方法。
修改
1 public class test { 2 public static void main(String[] args) { 3 String[] array = new String[]{"1","2","3"}; 4 List<String> list1 = Arrays.asList(array); 5 List<String> list2 = new ArrayList<String>(list1); 6 // 我們想要的操作 7 list2.add("4"); 8 list2.remove("1"); 9 // 操作結束后,再轉為數組 10 Object[] array2 = list2.toArray(); 11 for(Object a: array2) { 12 System.out.println(a); 13 } 14 15 } 16 }
我們需要將Arrays$ArrayList類轉換為ArrayList類,再來進行操作。結束之后,轉為數組。查看結果
兩個操作都成功了!