**一、分析 **
數組在實際的系統開發中使用的越來越少,我們通常只有在閱讀一些開源項目時才會看到它們的身影,在Java中它確實沒有List、Set、Map這些集合使用起來方便,但是在基本類型處理方面,數組還是占優勢的,而且集合的底層也是通過數組實現。
**二、場景 **
比如對一個數據集求和的計算:
//對數組求和
public static int sum(int[] datas){
int sum = 0;
for(int i = 0; I < datas.length; I++){
sum += datas[i];
}
return sum;
}
對于一個int類型的數組求和,取出所有元素的數組元素并想家,此算法是基本類型則使用數組效率最高。
//對列表求和計算
public static int sum(List<Integer> datas){
int sum = 0;
for(int i = 0; i < datas.size(); i++){
sum += datas.get(i);
}
return sum;
}
注意在相加求和的運算中,做了一個拆箱動作,這對于性能瀕于臨界的系統是比較危險的。
在初始化List的時候,要進行裝箱動作,雖然有整形池在,但不在整形池范圍都會產生一個新的Integer對象。
眾所周知,基本類型是在棧內存操作的,而對象則是在堆內存中操作的。棧內存的特點是速度快,容量小;堆內存的特點是速度慢,容量大(從性能上講,基本類型的處理占優勢)。
**三、建議 **
性能要求較高的場景中,使用數組替代集合。在實際測試中發現:對于基本類型進行求和計算時,數組的效率是集合的10倍。