java - 使用 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 之外还有其他方法可以做同样的事情吗?
提前致谢。:-)
解决方案
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]);
奖金:
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);
整数的 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)));
推荐阅读
- playlist - 液体肥皂备用播放列表
- javascript - 为什么 MDN 说“Function.prototype 不能被修改”?
- javascript - 如何让 Electron 在外部应用程序中自动打开下载的文件?
- php - 如何在本地主机的 wp-admin 中修复 ERR_CONNECTION_REFUSED 错误?
- python - Numpy 将在 Jupyter 中加载,但不会在 cmd/IDLE 中加载
- c# - 如何检查命令行参数的数量+异常处理
- kotlin - 从列表中删除不在另一个列表中的元素 - Kotlin
- java - 什么是更高性能的 equal 或 instanceof?
- python - 如何使用 db.command 获取 Python Mongo Aggregate 解释?
- python - 无法在 MACOS mojave 上运行来自 python 2.7 的 postgres 请求