首页 > 解决方案 > 使用 ArrayUtils 将包装类数组转换为原始数组

问题描述

我创建了一个整数包装类的 ArrayList,然后将其转换为整数类型数组。现在我的目标是将其转换为 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 内置类、方法和包。

或者除了 ArrayUtils 之外还有其他方法可以做同样的事情吗?

提前致谢。:-)

标签: javaarraysarraylistwrapperprimitive

解决方案


Integer 到 int数组转换的解决方案,无需 ArrayUtils:

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

反之亦然,int 到 Integer数组:

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

奖金:

  1. ArrayList of Integers 到 int 数组。

     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. 整数的 ArrayList(作为字符串)到 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)));
    

推荐阅读