首页 >Java >java教程 >Java中如何高效地将ArrayList转换为Primitive int Array?

Java中如何高效地将ArrayList转换为Primitive int Array?

DDD
DDD原创
2024-12-15 07:46:13728浏览

How to Efficiently Convert an ArrayList to a Primitive int Array in Java?

转换 ArrayList原始 int 数组

尝试使用以下代码将包含 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn