如何将包含整数的 ArrayList 转换为原始 int 数组? [英] How to convert an ArrayList containing Integers to primitive int array?

查看:27
本文介绍了如何将包含整数的 ArrayList 转换为原始 int 数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用以下代码将包含 Integer 对象的 ArrayList 转换为原始 int[],但它引发了编译时错误.是否可以在 Java 中进行转换?

I'm trying to convert an ArrayList containing Integer objects to primitive int[] with the following piece of code, but it is throwing compile time error. Is it possible to convert in Java?

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

推荐答案

您可以转换,但我认为没有任何内置功能可以自动执行此操作:

You can convert, but I don't think there's anything built in to do it automatically:

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

(Note that this will throw a NullPointerException if either integers or any element within it is null.)

根据评论,您可能希望使用列表迭代器来避免诸如 LinkedList 之类的列表的讨厌成本:

As per comments, you may want to use the list iterator to avoid nasty costs with lists such as 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;
}

这篇关于如何将包含整数的 ArrayList 转换为原始 int 数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆