在java中我們可以用數組或者集合將一些數據集中起來進行管理,但是數據和集合也有一些不同的特點;
當我們創(chuàng)建數組的時候,我們需要指定數組的大小,也就是需要說明這個數據可以存多少數據,并且指定所存數據的類型,比如我們要存int類型或者其他類型的,當我們規(guī)定好存儲的大小和類型之后,程序會為我們在內存中開辟一塊連續(xù)的存儲空間,并且只能保存我們之前規(guī)定的數據類型,不可以存放其他類型;使用數組的時候,我們修改和獲取數組里面的內容速度會很快,但是因為分配的內存是連續(xù)的,當我們需要在中間插入一個數據的時候,需要將后面的數據一個一個的往后移動,然后在插入的位置保存需要插入的值,這樣插入效率就會比較低了;
在java中集合List是一個接口,常用的實現List的類有ArrayList,LinkList,Vector;這三個底層的實現也是有不同的區(qū)別;
ArrayList底層的實現是動態(tài)數組,所以ArrayList對于數據的查詢,效率會比較高,但是對于數據的插入效率會比較低;
LinkList底層的實現是雙向鏈表,鏈表的實現原理是一個節(jié)點連接著下一個節(jié)點,所以一個鏈表在內存中的地址并不是連續(xù)的,當我們需要在第N個位置之后插入一個數據的時候,程序可以在空閑的內存中將數據保存,然后將這個數據的下一個節(jié)點指向第N個位置的下一個節(jié)點,然后重新將第N個位置數據的下一個位置指向新創(chuàng)建的數據,這樣就將新的數據插入到了鏈表中,這種形式不需要移動插入位置的后邊數據,僅僅只是修改了節(jié)點的指向,所以鏈表插入效率會比較高,但是如果要查詢的時候,就需要從頭結點往后一個一個的查找,知道找到所要查找的數據,所以鏈表的查詢效率相對比較低了;
Vector的實現也是基于數據實現的(類似ArrayList),但是他與ArrayList不同的點在于,Vector是線程安全的,所以在效率方面會比ArrayList低一些;
雖然ArrayList是基于數據實現的,但是數組一旦確定大小之后,以后是不可以再次修改保存數據量大小的,但是ArrayList并沒有大小的限制,他是基于數據進行動態(tài)擴容的,所以效率方面數組的效率相對于ArrayList高一些;
在我們開發(fā)中,如果確定空間大小的,我們可以使用數據來進行保存,如果不確定大小的數據可以使用List進行保存數據;然后根據數據查詢頻率和增刪頻率的不同,可以選擇ArrayList和LinkList;
>>本文地址:http://uj2y2uok.com/zhuanye/2020/48579.html
聲明:本站稿件版權均屬中公教育優(yōu)就業(yè)所有,未經許可不得擅自轉載。
1 您的年齡
2 您的學歷
3 您更想做哪個方向的工作?