一、List轉數組的常規方式
在Java中,List和數組是兩種常用的集合類型,它們各有優缺點。有時候我們需要將List轉換為數組進行處理或保存,這時就需要用到List轉數組的方法了。最常用的方式就是通過for循環依次將List中的元素賦值到新數組中:
List<String> list = new ArrayList<>(); list.add("first"); list.add("second"); list.add("third"); String[] array1 = new String[list.size()]; for (int i = 0; i < list.size(); i++) { array1[i] = list.get(i); }
這種方式簡單易懂,但是需要遍歷整個List,並且需要新定義一個數組來保存結果,有些浪費空間。另外如果要將List轉為其他類型的數組,就需要分別寫對應類型的轉換方法。
二、利用toArray()方法轉數組
Java中,List介面提供了一個toArray()方法,可以直接將List轉換為數組。使用時可以不指定數組類型,也可以指定。
List<String> list = new ArrayList<>(); list.add("first"); list.add("second"); list.add("third"); String[] array2 = list.toArray(new String[0]);
上面的代碼將List轉為String數組,並且不需要創建新的空間來保存結果。如果要將List轉為其他類型的數組,只需要改變toArray()方法中的參數即可。需要注意的是,如果數組容量小於List的實際長度,toArray()方法會重新創建指定類型的數組,因此一般情況下通過傳入一個空數組即可避免額外的開銷。
三、使用streams進行轉換
Java 8推出了Streams API,可以在集合上進行各種操作,包括List轉數組。使用Streams可以更加簡便和簡潔地轉換List為數組:
List<String> list = new ArrayList<>(); list.add("first"); list.add("second"); list.add("third"); String[] array3 = list.stream().toArray(String[]::new);
上面的代碼使用stream()獲取List的Stream對象,然後使用toArray()方法進行轉換。這種方式不需要進行循環,也不需要創建新的數組,代碼簡潔易懂。同樣的,可以通過更改new的類型來轉換為其他類型的數組。
四、使用toArray()方法轉換基本類型數組
上述三種方式都可以轉換Object類型的數組,但是對於基本類型的數組,toArray()方法並沒有直接提供,需要使用Java的自動裝箱機制。自動裝箱機制指的是,Java可以自動將基本類型的變數包裝成對應的包裝類型,例如int可以自動裝箱成Integer類型。使用toArray()方法轉換基本類型數組的方法如下所示:
List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); int[] array4 = list.stream().mapToInt(Integer::intValue).toArray();
上面的代碼將List<Integer>轉換為int[],先通過mapToInt()方法將Integer類型轉換為int類型,再通過toArray()方法直接轉換為數組。
五、總結
本文介紹了Java List轉數組的幾種實現方式,包括for循環賦值、toArray()方法轉換、Streams API轉換、以及將基本類型的List轉換為數組的方法。不同的情況下可以選擇不同的轉換方式。這些方法都有各自的優缺點,需要根據實際情況做出選擇。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/279689.html