集合是無限存儲的容器:
數(shù)組集合采用的算法是一開始先開辟好有限的空間進行存儲放進來的數(shù)據(jù)。
等需要再次存放數(shù)據(jù)的時候,再去開辟一塊比原來的空間多的容量之前,老的數(shù)據(jù)導(dǎo)入進新開辟的空間,然后再把新進來的數(shù)據(jù)放進空間里,依次這樣進行開辟導(dǎo)入就形成了無限的容器。這就是數(shù)組集合的算法。
在java源碼里面,采用的導(dǎo)入方式是直接調(diào)用本地系統(tǒng)語言來直接導(dǎo)入數(shù)據(jù),這樣提高了效率,一萬毫秒才能完成的事情也許四千毫秒就執(zhí)行完畢。
取消for循環(huán)導(dǎo)入使用System.arraycopy如下代碼:
/** * 更多資料歡迎瀏覽凱哥學(xué)堂官網(wǎng):http://kaige123.com? *@author小沫 *///把objs的數(shù)據(jù)從最開始導(dǎo)入到objs1最開始的空間進行依次存放。objs里面有多少數(shù)據(jù)那么就導(dǎo)入多少。System.arraycopy(objs,objs1,0,objs.length);
//用下標(biāo)得到數(shù)據(jù)publicObjectget(intindex){returnobjs[index];}//得到大小publicintsize(){returnindex;}
publicstaticvoidmain(){MyArrayList list=newMyArrayList();longtem=System.currentTimeMillis();for(inti=0;i<100000;i++){list.add("abc"+i);for(intj=0;j