将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()]));