使用 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]);
奖金:
整数数组列表。
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);
整数(作为字符串)到 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)));
我创建了一个 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]);
奖金:
整数数组列表。
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);
整数(作为字符串)到 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)));