简体   繁体   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"

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') 

Solution 1:解决方案1:

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;

Solution 2:解决方案2:

Use for loop:使用 for 循环:

List<Integer> list = new ArrayList();
for(int n : nums) {
    list.add(n);
}

Solution 3:解决方案3:

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.

相关问题 java.lang.ClassCastException:无法强制转换java.lang.Integer - java.lang.ClassCastException: java.lang.Integer cannot be cast java.lang.ClassCastException:无法转换为java.lang.Integer - java.lang.ClassCastException: cannot be cast to java.lang.Integer java.lang.ClassCastException: java.util.Arrays$ArrayList 不能在 DAO 中转换为 java.lang.Integer - java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.lang.Integer in DAO 如何修复:java.lang.ClassCastException:java.util.ArrayList无法强制转换为java.lang.Integer - How to fix: java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Integer java.lang.ClassCastException:java.util.Arrays $ ArrayList无法强制转换为java.lang.Integer - java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.lang.Integer java.lang.ClassCastException:[我无法转换为java.lang.Integer - java.lang.ClassCastException:[I cannot be cast to java.lang.Integer java.lang.ClassCastException:java.lang.Long 不能在 java 1.6 中转换为 java.lang.Integer - java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer in java 1.6 java.lang.ClassCastException:无法在Tableau中将java.lang.String强制转换为java.lang.Integer? - java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer in tableau? java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long in hibernate - java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long in hibernate java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long - java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM