在循环中填充地图时,是否更好地转换为(Float)或声明新的Float?

时间:2011-12-07 05:03:21

标签: java

哪个版本的循环效率会更高?还是真的没关系?

SortedMap<Float,Float> map = uDataMaster.getMap();
for (int i = 0; i < mzNumbers.length; i++) {
    map.put((Float)mzNumbers[i].floatValue(),(Float)intNumbers[i].floatValue());
}

SortedMap<Float,Float> map = uDataMaster.getMap();
for (int i = 0; i < mzNumbers.length; i++) {
    map.put( new Float(mzNumbers[i].floatValue()),new Float(intNumbers[i].floatValue()));
}

1 个答案:

答案 0 :(得分:1)

你的第一个例子只能用于Java 5引入的自动装箱。(但你已经在这里使用其他Java 5功能,比如泛型,所以避免这种情况没有任何好处。)除此之外,他们真的应该是一样的。无论如何,编译器很可能在编译时将其转换为new Float(...)

我打算建议Float.valueOf(...),但在内部,这只是调用new Float(...)。但是,根据评论中的Javadoc和shakedown的建议,这应该是首选方法 - 即使当前版本的Java实际上没有在其当前实现中进行任何池化。