25

如何将 Long[] 转换为 long[]?例如,如果它不是下面的数组,我知道如何转换。

long ll = (Long)Object[1].longValue()

但是我如何转换为一个数组,下面是不对的,但任何人都可以纠正它吗?

long[] l_ar = (Long[])Object[]  
4

4 回答 4

43

您可以根据以下内容窃取解决方案ArrayUtils

Long[] longObjects = { 1L, 2L, 3L };
long[] longArray = ArrayUtils.toPrimitive(longObjects);
于 2012-08-19T20:05:05.647 回答
21

没有标准API 方法可以做到这一点(如何null处理 -elements?),因此您需要自己创建这样的方法。

像这样的东西(会扔NullPointerException在任何物体上null

public static long[] toPrimitives(Long... objects) {

    long[] primitives = new long[objects.length];
    for (int i = 0; i < objects.length; i++)
         primitives[i] = objects[i];

    return primitives;
}
于 2012-08-19T20:00:25.003 回答
11

使用 java 8 流:

public static long[] unboxed(final Long[] array) {
    return Arrays.stream(array)
                 .filter(Objects::nonNull)
                 .mapToLong(Long::longValue)
                 .toArray();
}
于 2016-03-07T13:39:49.750 回答
2

为了做到这一点,最好的方法是浏览每个数组。

例如,从 Long[] 到 long[]:

Long[] objLong = new Long[10];
//fill objLong with some values
long[] primLong = new long[objLong.length]

for(int index = 0; index < objLong.length; index++)
{
    primLong[index] = objLong[index];
}

由于自动拆箱,这应该通过将 Long 转换为 long 来解决。

于 2012-08-19T20:05:35.787 回答