将 int 原始数组转换为 Java 中的 ArrayList:"java.lang.ClassCastException: [I cannot be cast to java.lang.Integer"
Converting primitive array of int into ArrayList in Java: "java.lang.ClassCastException: [I cannot be cast to java.lang.Integer"
我想知道如何将原始整数数组转换为整数列表?
没有编译错误:
int[] nums = {0, 1};
List<Integer> list = new ArrayList(Arrays.asList(nums));
list.get(0);
但是这个:
int[] nums = {0, 1};
List<Integer> list = new ArrayList(Arrays.asList(nums));
int a = list.get(0);
失败:
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')
解决方案 1:
在Java 8:
List<Integer> list = Arrays.stream(nums).boxed().collect(Collectors.toCollection(ArrayList::new));
注意:您可能需要:
import java.util.stream.Collectors;
解决方案 2:
使用for循环:
List<Integer> list = new ArrayList();
for(int n : nums) {
list.add(n);
}
解决方案 3:
将原始数组声明为 Ingeger[]
而不是 int[]
:
Integer[] nums = {0, 1};
代码 Arrays.asList(nums)
不会转换为具有 2 个值的 ArrayList
,即。 1 和 2。它只有一个值,int[] { 1, 2 }
。为了创建正确的ArrayList
,你应该使用
List<Integer> list = Arrays.stream(nums).boxed().collect(Collectors.toList());
我想知道如何将原始整数数组转换为整数列表?
没有编译错误:
int[] nums = {0, 1};
List<Integer> list = new ArrayList(Arrays.asList(nums));
list.get(0);
但是这个:
int[] nums = {0, 1};
List<Integer> list = new ArrayList(Arrays.asList(nums));
int a = list.get(0);
失败:
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')
解决方案 1:
在Java 8:
List<Integer> list = Arrays.stream(nums).boxed().collect(Collectors.toCollection(ArrayList::new));
注意:您可能需要:
import java.util.stream.Collectors;
解决方案 2:
使用for循环:
List<Integer> list = new ArrayList();
for(int n : nums) {
list.add(n);
}
解决方案 3:
将原始数组声明为 Ingeger[]
而不是 int[]
:
Integer[] nums = {0, 1};
代码 Arrays.asList(nums)
不会转换为具有 2 个值的 ArrayList
,即。 1 和 2。它只有一个值,int[] { 1, 2 }
。为了创建正确的ArrayList
,你应该使用
List<Integer> list = Arrays.stream(nums).boxed().collect(Collectors.toList());