[英]Converting primitive array of int into ArrayList in Java: "java.lang.ClassCastException: [I cannot be cast to java.lang.Integer"
I'm wondering how I can convert a primitive array of integers to a list of Integer?我想知道如何将原始整数数组转换为整数列表?
There's no compile error for:没有编译错误:
int[] nums = {0, 1};
List<Integer> list = new ArrayList(Arrays.asList(nums));
list.get(0);
But this one:但是这个:
int[] nums = {0, 1};
List<Integer> list = new ArrayList(Arrays.asList(nums));
int a = list.get(0);
fails with:失败:
java.lang.ClassCastException: class [I cannot be cast to class java.lang.Integer ([I and java.lang.Integer are in module java.base of loader 'bootstrap')
In Java 8:在 Java 8 中:
List<Integer> list = Arrays.stream(nums).boxed().collect(Collectors.toCollection(ArrayList::new));
Note: You might need to:注意:您可能需要:
import java.util.stream.Collectors;
Use for loop:使用 for 循环:
List<Integer> list = new ArrayList();
for(int n : nums) {
list.add(n);
}
Declare the original array as Ingeger[]
instead of int[]
:将原始数组声明为Ingeger[]
而不是int[]
:
Integer[] nums = {0, 1};
The code Arrays.asList(nums)
won't translate to an ArrayList
with 2 values, viz.代码Arrays.asList(nums)
不会转换为具有 2 个值的ArrayList
,即。 1 and 2. It just has one value, int[] { 1, 2 }
. 1 和 2。它只有一个值, int[] { 1, 2 }
。 In order to create the right ArrayList
, you should use为了创建正确的ArrayList
,您应该使用
List<Integer> list = Arrays.stream(nums).boxed().collect(Collectors.toList());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.