将整数列表转换为整数数组[重复]

Posted

技术标签:

【中文标题】将整数列表转换为整数数组[重复]【英文标题】:Convert Integer List to int array [duplicate] 【发布时间】:2011-04-12 00:16:45 【问题描述】:

有没有办法将整数列表转换为整数数组(不是整数)。像 List 到 int [] 之类的东西?无需遍历列表并手动将整数转换为整数。

【问题讨论】:

这里的循环有什么问题? 【参考方案1】:

您可以使用toArray 从apache commons 中获取IntegersArrayUtils 的数组,以将其转换为int[]


List<Integer> integerList = new ArrayList<Integer>();
Integer[] integerArray = integerList.toArray(new Integer[0]);
int[] intArray = ArrayUtils.toPrimitive(integerArray);

资源:

Apache commons - ArrayUtils.toPrimitive(Integer[]) Apache commons lang Javadoc - Collection.toArray(T[])

关于同一主题:

How to convert List to int[] in Java?

【讨论】:

+1,即将发布相同的内容。 :-) 有一个错字,应该是ArrayUtils 为了安全起见,您需要在调用toArray()之前从列表中删除所有空元素【参考方案2】:

我确信您可以在第三方库中找到一些东西,但我不相信 Java 标准库中内置了任何东西。

我建议你只写一个实用函数来完成它,除非你需要很多类似的功能(在这种情况下,值得寻找相关的 3rd 方库)。请注意,您需要弄清楚如何处理列表中的空引用,这显然无法在 int 数组中准确表示。

【讨论】:

【参考方案3】:

没有:)

您需要遍历列表。应该不会太痛。

【讨论】:

【参考方案4】:

这是一个实用方法,可将整数集合转换为整数数组。如果输入为 null,则返回 null。如果输入包含任何空值,则会创建一个防御性副本,从中剥离所有空值。原始集合保持不变。

public static int[] toIntArray(final Collection<Integer> data)
    int[] result;
    // null result for null input
    if(data == null)
        result = null;
    // empty array for empty collection
     else if(data.isEmpty())
        result = new int[0];
     else
        final Collection<Integer> effective;
        // if data contains null make defensive copy
        // and remove null values
        if(data.contains(null))
            effective = new ArrayList<Integer>(data);
            while(effective.remove(null))
        // otherwise use original collection
        else
            effective = data;
        
        result = new int[effective.size()];
        int offset = 0;
        // store values
        for(final Integer i : effective)
            result[offset++] = i.intValue();
        
    
    return result;

更新:Guava 有一个用于此功能的单行代码:

int[] array = Ints.toArray(data);

参考:

Ints.toArray(Collection&lt;Integer&gt;)

【讨论】:

【参考方案5】:
    List<Integer>  listInt = new ArrayList<Integer>();

    StringBuffer strBuffer = new StringBuffer();

    for(Object o:listInt)
        strBuffer.append(o);
    

    int [] arrayInt = new int[]Integer.parseInt(strBuffer.toString());

我认为这应该可以解决您的问题

【讨论】:

以上是关于将整数列表转换为整数数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将字符串列表转换为整数列表[重复]

将字符串数组转换为整数python [重复]

在Java 8中将整数数组转换为字符串数组的最简单方法[重复]

JavaScript将RGB整数转换为十六进制[重复]

在JavaScript中将整数转换为数组的简单方法[重复]

使用 Spring Boot Rest 转换为 JSON 时,Java LocalDateTime 被转换为整数数组 [重复]