轉換ArrayList
嘗試使用下列程式碼將包含Integer 物件的ArrayList 轉換為原始編譯int 陣列會導致編譯時錯誤:
List<Integer> x = new ArrayList<>(); int[] n = (int[]) x.toArray(int[x.size()]);
Java 8 流轉換
在 Java 8 中,更有效的方法涉及使用流 API。其實作方式如下:
int[] arr = list.stream() .mapToInt(Integer::intValue) .toArray();
此程式碼從清單建立一個串流,使用 Integer::intValue 方法引用將每個 Integer 物件對應到其原始 int 值,然後將 IntStream 轉換為 int 陣列使用toArray().
錯誤處理
如果清單包含任何空引用,上面的程式碼將拋出 NullPointerException。為了避免這種情況,您可以在映射之前過濾掉任何空值:
int[] arr = list.stream() .filter(Objects::nonNull) .mapToInt(Integer::intValue) .toArray();
範例:
List<Integer> list = Arrays.asList(1, 2, 3, 4); // Convert to int[] int[] arr1 = list.stream() .mapToInt(Integer::intValue) .toArray(); // [1, 2, 3, 4] // Filter out nulls before conversion list.set(1, null); // [1, null, 3, 4] int[] arr2 = list.stream() .filter(Objects::nonNull) .mapToInt(Integer::intValue) .toArray(); // [1, 3, 4]
以上是Java中如何有效率地將ArrayList轉換為Primitive int Array?的詳細內容。更多資訊請關注PHP中文網其他相關文章!