如何将Long []转换为long []?例如,我知道如果它不是数组如下转换。
long ll = (Long)Object[1].longValue()
但是我如何转换为一个数组,下面是不对的,但任何人都可以纠正它吗?
long[] l_ar = (Long[])Object[]
答案 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()]));