将Long 转换为long (原始)java

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

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

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

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

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

 Long[] longObjects = { 1L, 2L, 3L }; long[] longArray = ArrayUtils.toPrimitive(longObjects); 

没有标准的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; } 

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

例如,从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来解决。

使用java 8流:

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

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

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