转换 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中文网其他相关文章!