**一置侍、分析 **
數(shù)組在實(shí)際的系統(tǒng)開(kāi)發(fā)中使用的越來(lái)越少,我們通常只有在閱讀一些開(kāi)源項(xiàng)目時(shí)才會(huì)看到它們的身影拦焚,在Java中它確實(shí)沒(méi)有List蜡坊、Set、Map這些集合使用起來(lái)方便赎败,但是在基本類(lèi)型處理方面秕衙,數(shù)組還是占優(yōu)勢(shì)的,而且集合的底層也是通過(guò)數(shù)組實(shí)現(xiàn)螟够。
**二灾梦、場(chǎng)景 **
比如對(duì)一個(gè)數(shù)據(jù)集求和的計(jì)算:
//對(duì)數(shù)組求和
public static int sum(int[] datas){
int sum = 0;
for(int i = 0; I < datas.length; I++){
sum += datas[i];
}
return sum;
}
對(duì)于一個(gè)int類(lèi)型的數(shù)組求和峡钓,取出所有元素的數(shù)組元素并想家妓笙,此算法是基本類(lèi)型則使用數(shù)組效率最高。
//對(duì)列表求和計(jì)算
public static int sum(List<Integer> datas){
int sum = 0;
for(int i = 0; i < datas.size(); i++){
sum += datas.get(i);
}
return sum;
}
注意在相加求和的運(yùn)算中能岩,做了一個(gè)拆箱動(dòng)作寞宫,這對(duì)于性能瀕于臨界的系統(tǒng)是比較危險(xiǎn)的。
在初始化List的時(shí)候拉鹃,要進(jìn)行裝箱動(dòng)作辈赋,雖然有整形池在,但不在整形池范圍都會(huì)產(chǎn)生一個(gè)新的Integer對(duì)象膏燕。
眾所周知钥屈,基本類(lèi)型是在棧內(nèi)存操作的,而對(duì)象則是在堆內(nèi)存中操作的坝辫。棧內(nèi)存的特點(diǎn)是速度快篷就,容量小近忙;堆內(nèi)存的特點(diǎn)是速度慢竭业,容量大(從性能上講智润,基本類(lèi)型的處理占優(yōu)勢(shì))。
**三未辆、建議 **
性能要求較高的場(chǎng)景中窟绷,使用數(shù)組替代集合。在實(shí)際測(cè)試中發(fā)現(xiàn):對(duì)于基本類(lèi)型進(jìn)行求和計(jì)算時(shí)咐柜,數(shù)組的效率是集合的10倍兼蜈。