开发者社区> 问答> 正文

为什么我的程序在使用foreach循环迭代ArrayList时显示这种类型的错误?

1个

[无法在com.cg.genuine.ui.ArrayLisPr.main(ArrayLisPr.java:12)上转换为java.lang.Integer。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ArrayLisPr {
    public static void main(String[] args) {

        int[] x={11,20,3,4,5};
        List<Integer> po = new ArrayList(Arrays.asList(x));
        for(Integer val:po){
            System.out.println(val);
        }
    }
}

回答来源:Stack Overflow

展开
收起
montos 2020-03-26 08:58:57 467 0
1 条回答
写回答
取消 提交回答
  • x是单个对象,它是个int[],因此不能转换为Integer。如果删除中间变量并Arrays.asList直接使用,Java将能够将每个变量自动装箱int到Integer单独的位置:

    List<Integer> po = new ArrayList<>(Arrays.asList(11,20,3,4,5));
    

    编辑:

    如果要保留int[]引用,则必须将其List 手动转换。一种方法是将其流化并装箱所有元素:

    List<Integer> po = Arrays.stream(x).boxed().collect(Collectors.toList());
    

    回答来源:Stack Overflow

    2020-03-26 08:59:30
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载