我如何将Long[]转换为long[]?例如,如果不是数组,则知道如何进行转换,代码如下。
long ll = (Long)Object[1].longValue()
但是如何将下面的内容转换为数组呢?以下方式不正确,有没有人可以进行修正?
long[] l_ar = (Long[])Object[]
我如何将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元素,该如何处理?),因此您需要自己创建这样的方法。
类似于以下代码(在任何对象为null
时将抛出NullPointerException
):
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;
}
使用Java 8流:
public static long[] unboxed(final Long[] array) {
return Arrays.stream(array)
.filter(Objects::nonNull)
.mapToLong(Long::longValue)
.toArray();
}
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[]
最常见的原因是为了节省空间和提高性能。如果你已经有了Long[]
,那么你想要做什么呢?或者你只是好奇吗? - FalmarriLong[]
,但你要将它传递给一些期望long[]
的函数。 - cHao