使用 ArrayUtils 将包装器 class 数组转换为原始数组

Converting a wrapper class array to primitive array using ArrayUtils

我创建了一个 Integer 包装器的 ArrayList class,然后将其转换为 Integer 类型数组。现在我的目标是将它转换成 int 类型的数组。尝试使用 ArrayUtils.toPrimitive() 方法解决问题。但它有一些问题。 这是我的代码:

import java.util.ArrayList;
import java.util.Arrays;
import java.lang.Object;

public class ArrayListToArray {
    public static void main(String[] args) {

        // Convert to int array in one line

        ArrayList<Integer> list = new ArrayList<Integer>();

        list.add(Integer.parseInt("1"));
        list.add(Integer.parseInt("2"));
        list.add(Integer.parseInt("3"));
        list.add(Integer.parseInt("4"));

        Integer[] wrapperArr = list.toArray(new Integer[list.size()]);

        // If you want a `primitive` type array
        int[] arr = ArrayUtils.toPrimitive(wrapperArr);

        System.out.println(Arrays.toString(arr));
    }
}

显示错误ArrayUtils 无法解析。现在正在执行代码。

如何在不写循环的情况下解决问题? 我正在探索 java 内置的 classes、方法和包。

或者是否有 除了 ArrayUtils 之外的任何其他方法来做同样的事情?

提前致谢。 :-)

您的导入可能有误,或者 "commons-lang3" jar 可能不在构建路径中。

import org.apache.commons.lang3.ArrayUtils

一种可能是,您的代码引用的 ArrayUtils class 不是由 org.apache.commons.commons-lang3 提供的,而是来自其他一些依赖项。重新检查您的导入。

删除您当前的导入并重新导入。 IDE 可能有助于建议 classes。确保使用 org.apache.commons.lang3.ArrayUtils 导入。 确保您在 pom.xml.

中具有以下依赖项
    <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.9</version>
    </dependency>

但是,除非有特定原因,否则请使用 java streams() 并获取原始数组而不是使用外部依赖项

整数到 int 数组转换的解决方案,没有 ArrayUtils:

    final int[] arr = new int[wrapperArr.length];
    Arrays.setAll(arr, i -> wrapperArr[i]);

反之亦然,int 到 Integer array:

    final Integer[] wrapperArr = new Integer[arr.length];
    Arrays.setAll(wrapperArr, i -> arr[i]);

奖金:

  1. 整数数组列表。

     final List<Integer> list = new ArrayList<>();
     list.add(1);
     list.add(2);
     list.add(3);
    
     final int[] arr = new int[list.size()];
     Arrays.setAll(arr, list::get);
    
  2. 整数(作为字符串)到 int 数组的数组列表。

     final List<String> list = new ArrayList<>();
     list.add("1");
     list.add("2");
     list.add("3");
    
     final int[] arr = new int[list.size()];
     Arrays.setAll(arr, i -> Integer.parseInt(list.get(i)));