【发布时间】:2012-09-24 14:04:36
【问题描述】:
给定以下函数:
public void convertToWrapper(long[] longsToConvert)
{
}
和
public void convertToPrimitive(Long[] longsToConvert)
{
}
Apache ArrayUtils 公开以下内容:
public Long[] toObject(long[] longs){
final Long [] result = new Long [array.length];
for (int i = 0; i < array.length; i++) {
result[i] = new Long (array[i]);
}
}
我的问题是有没有办法只使用一个数组来做到这一点?我尝试了以下不起作用的方法:
for(int i =0;i<array.length;i++)
{
array[i] = new Long(array[i]);
}
【问题讨论】:
-
我不认为这是可能的。
-
请注意,这样写可能更有效:
array[i] = Long.valueOf(array[i]);而不是array[i] = new Long(array[i]);,因为Longs通常缓存在 -128 和 +127 之间(即使 JLS 不需要它) )。 -
请注意 Long.valueOf 是在 1.5 中添加的,我猜这解释了 ArrayUtils 代码。
标签: java performance memory-efficient