可能重复:
将对象数组转换为其基本类型的数组
我Parcel为Android 做了一个我试图通过转换它来打包ArrayList<Long>(toArray给我Long[])long[],有一个简单的方法来做到这一点吗?
我意识到我可以循环,但我想我正在寻找一个更优雅的解决方案.
Rei*_*eus 10
您可以使用Apache commons ArrayUtils:
long[] longArray = ArrayUtils.toPrimitive(longObjectArray);
Run Code Online (Sandbox Code Playgroud)
或者在Google的番石榴中:
long[] longArray = Longs.toArray(Arrays.asList(longObjectArray));
Run Code Online (Sandbox Code Playgroud)
不幸的是,没有比循环更简单的方法.这篇文章是关于做相反的事情,但想法是一样的......
由于另一个答案推荐Apache Commons并且你在Android上 - 如果我要包含一个额外的依赖项,我宁愿选择guava Longs实用程序类:
long[] primitive = Longs.toArray(listOfLongObjects);
Run Code Online (Sandbox Code Playgroud)
供参考,代码是:
public static long[] toArray(Collection<? extends Number> collection) {
if (collection instanceof LongArrayAsList) {
return ((LongArrayAsList) collection).toLongArray();
}
Object[] boxedArray = collection.toArray();
int len = boxedArray.length;
long[] array = new long[len];
for (int i = 0; i < len; i++) {
// checkNotNull for GWT (do not optimize)
array[i] = ((Number) checkNotNull(boxedArray[i])).longValue();
}
return array;
}
Run Code Online (Sandbox Code Playgroud)