将Long []转换为long [](原始)java

时间:2012-08-19 19:55:58

标签: java

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

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

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

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

5 个答案:

答案 0 :(得分:40)

您可以根据ArrayUtils

窃取解决方案
Long[] longObjects = { 1L, 2L, 3L };
long[] longArray = ArrayUtils.toPrimitive(longObjects);

答案 1 :(得分:20)

没有标准的API方法(如何处理null - 元素?)因此您需要自己创建这样的方法。

这样的东西(将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;
}

答案 2 :(得分:4)

使用java 8流:

public static long[] unboxed(final Long[] array) {
    return Arrays.stream(array).filter(Objects::nonNull).mapToLong(Long::longValue).toArray();
}

答案 3 :(得分: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来实现。

答案 4 :(得分:1)

感谢大家的回答;我只是粘贴了我最终选择的解决方案。

List<Long> longObjects = new ArrayList<Long>();

long[] longArray2 = ArrayUtils.toPrimitive(longObjects.toArray(new Long[longObjects.size()]));