我试图用下面的代码将包含Integer对象的ArrayList转换为原始int[],但它抛出了编译时错误.可以用Java进行转换吗?

List<Integer> x =  new ArrayList<Integer>();
int[] n = (int[])x.toArray(int[x.size()]);

推荐答案

你可以皈依,但我不认为有什么内置的东西可以自动做到这一点:

public static int[] convertIntegers(List<Integer> integers)
{
    int[] ret = new int[integers.size()];
    for (int i=0; i < ret.length; i++)
    {
        ret[i] = integers.get(i).intValue();
    }
    return ret;
}

(请注意,如果integers或其中任何一个元素为null,这将抛出NullPointerException.)

编辑:根据 comments ,您可能希望使用列表迭代器来避免列表的严重开销,例如LinkedList:

public static int[] convertIntegers(List<Integer> integers)
{
    int[] ret = new int[integers.size()];
    Iterator<Integer> iterator = integers.iterator();
    for (int i = 0; i < ret.length; i++)
    {
        ret[i] = iterator.next().intValue();
    }
    return ret;
}

Java相关问答推荐

Jooq隐式地将bigint转换为数字,并且索引不起作用

为什么JFrame paint()多次绘制同一点(或根本不绘制)?

Maven Google Sheets版本问题

将linkedHashMap扩展到Java中的POJO类

使用JdkClientHttpRequestFactory通过Spring RestClient和Wiemock读取时达到EOF

S的字符串表示是双重精确的吗?

Jlink选项&-strie-ative-Commands";的作用是什么?

如何在带有Micronaut的YAML中使用包含特殊字符的字符串作为键

如何让JFileChooser(DIRECTORIES_ONLY)从FolderName中的空白开始?

SpringBootreact 式Web应用程序的Spring Cloud Configer服务器中的资源控制器损坏

具有多种令牌类型和段的复杂Java 17正则表达式

如何在Java记录中设置BigDecimal类型属性的精度?

为什么Spring Boot项目无法为基于MySQL的CRUD应用程序找到从JPARepository接口扩展的ProductRepository?

基于配置switch 的@Controller的条件摄取

将关闭拍卖的TimerService

在使用具有不同成本的谓词调用allMatch之前对Java流进行排序会带来什么好处吗?

RestTemplate Bean提供OkHttp3ClientHttpRequestFactory不支持Spring Boot 3中的请求正文缓冲

在ECLIPSE上的M1 Pro上运行JavaFX的问题

如何在特定关键字后提取与模式匹配的多个值?

双对象供应商