繁体   English   中英

在 Java 中将 int 的原始数组转换为 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());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM