1. 簡介java
Arrays.asList()方法能夠將數組轉化爲長度固定的列表。數組
該方法強調了列表的長度是固定的,所以不能使用list的add和remove方法修改list長度。spa
2. 示例code
1 import java.util.*; 2 3 public class ListFunc1 { 4 public static void main(String[] args){ 5 6 Integer[] array1 = new Integer[]{1,2,3,4}; 7 List<Integer> list1 = Arrays.asList(array1); 8 list1.set(0,0); 9 // list1.add(5); // (1) 10 // list1.remove(2); // (2) 11 System.out.println(list1); 12 13 /* 14 * ArrayList(Collection<? extends E> c) 15 * 按照集合的迭代器返回的順序構造一個包含指定集合元素的列表 16 * */ 17 Integer[] array2 = new Integer[]{1,2,3,4}; 18 List<Integer> list2 = new ArrayList<>(Arrays.asList(array2)); // (3) 19 list2.set(0,0); 20 list2.add(5); 21 list2.remove(2); 22 System.out.println(list2); // [1, 2, 4, 5] 23 } 24 }
示例說明以下:blog
(1)使用add()方法時將會拋出異常:Exception in thread "main" java.lang.UnsupportedOperationException;element
源碼以下,能夠發現使用add方法時將會直接拋出異常。rem
1 public boolean add(E e) { 2 add(size(), e); 3 return true; 4 } 5 6 public void add(int index, E element) { 7 throw new UnsupportedOperationException(); 8 }
(2)使用remove()方法時將會拋出異常:Exception in thread "main" java.lang.UnsupportedOperationException;源碼
源碼以下,能夠發現使用remove方法時將會直接拋出異常。io
1 public E remove(int index) { 2 throw new UnsupportedOperationException(); 3 }
(3)若是想要修改由數組轉換而成的列表,能夠使用ArrayList(Collection<? extends E> c)構造器,class
新建一個列表便可,構造器的參數爲集合。
1 import java.util.*; 2 3 public class Main1 { 4 public static void main(String[] args){ 5 6 /* Arrays.asList()構建列表 7 * 列表長度不可變,即不能夠add和remove 8 * */ 9 int[] intArray1 = new int[]{5, 7}; 10 List<int[]> intList1 = Arrays.asList(intArray1); 11 System.out.println(intList1); // [[I@1540e19d] 12 13 Integer[] intArray2 = new Integer[]{5, 7}; 14 List<Integer> intList2 = Arrays.asList(intArray2); 15 // intList2.add(3); // error 16 System.out.println(intList2); // [5, 7] 17 18 19 20 /* 使用ArrayList(Collection<? extends E> c)構建列表 21 * 長度可變,便可以add和remove 22 * */ 23 int[] intArray = new int[]{2, 4}; 24 List<int[]> intList = new ArrayList<>(Arrays.asList(intArray)); 25 System.out.println(intList); // [[I@1540e19d] 26 27 Integer[] integerArray = new Integer[]{1,3}; 28 List<Integer> integerList = new ArrayList<>(Arrays.asList(integerArray)); 29 integerList.add(5); // success 30 System.out.println(integerList); // [1, 3, 5] 31 } 32 }
!!!