一、數組轉List
1. 使用for循環逐個添加
String[] arr = {"A", "B", "C"};
List<String> list = new ArrayList<>();
for (String element : arr) {list.add(element);
}
2. 使用Arrays.asList(arr)
String[] arr = {"A", "B", "C"};
List<String> list = Arrays.asList(arr);
//list.add("D");//UnsupportedOperationException
//list.remove("A");//UnsupportedOperationException
注意:Arrays.asList()返回的是一個Arrays中的內部類ArrayList對象(不是我們平時使用的那個),這個list沒有重寫實現添加和刪除方法,其大小是固定不變的,當調用它的add和remove方法時,會默認拋出UnsupportedOperationException異常。
如需對轉出的list進行增刪操作,可進一步構造:
List<String> list = new ArrayList<>(Arrays.asList(arr));
二、List轉數組
1. list.toArray(T[] a)
List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));Object[] objects = list.toArray();//toArray()返回的是Object數組
String[] array = list.toArray(new String[0]);//傳入一個大小為0的String數組來指定返回值類型
toArray()方法返回的是Object數組,可使用list.toArray(T[] a)傳入一個指定類型的數組,獲得的結果數據即為指定類型的數組。
ArrayList中toArray(T[] a)方法的源碼如下,
- 當傳入的數組容量小于list的大小時,會直接將列表元素copy到一個新數組,傳入的數組僅用來指定新數組類型。
- 當傳入的數組容量大于等于list的大小時,則直接將列表元素拷貝到這個數組并將其返回。
2. list.stream().toArray(T[] :: new)
將list轉換為stream流,再轉換為數組
String[] arr = list.stream().toArray(String[]::new);
通常是在需要對list的元素做中間處理后再轉換為數組時,才用這個方法,如下
//給每個元素再加上一個字符串再轉為數組String[] arr1 = list.stream().map(s -> s+"str").toArray(String[]::new);