ArrayList相關面試題

2021-10-01 21:22:25 字數 1565 閱讀 4388

arraylist的插入或刪除一定慢嗎?

取決於插入或刪除的元素距離有多遠,如果不是最後乙個元素,則在插入或者刪除時,需要移動該位置往後的元素,

在插入時且在陣列的末端,如果底層陣列的容量已經小於當前list容量,則根據arraylist的擴容機制需要增大1.5倍的容量,並初始化乙個新的陣列,將原有的資料複製到新的陣列中去,比較耗費資源,如果不是末端,還需要移動該位置之後的元素。

所以在集合裡面插入元素速度比對結果是,首部插入,linkedlist更快;中間和尾部插入,arraylist更快;在集合裡面刪除元素類似,首部刪除,linkedlist更快;中間刪除和尾部刪除,arraylist更快;由此建議,資料量不大的集合,主要進行插入、刪除操作,建議使用linkedlist;資料量大的集合,使用arraylist就可以了,不僅查詢速度快,並且插入和刪除效率也相對較高。

arraylist的預設陣列大小為什麼是10?

據說是因為sun的程式設計師對一系列廣泛使用的程式**進行了調研,結果就是10這個長度的陣列是最常用的最有效率的。也有說就是隨便起的乙個數字,8個12個都沒什麼區別,只是因為10這個陣列比較的圓滿而已

arraylist底層就是陣列,訪問速度本身就比較快,為什麼還要實現randomaccess介面?randomaccess是乙個標記介面 

(marker inte***ce), 被用於list介面的實現類, 表明這個實現類支援快速隨機訪問功能(如arraylist). 當程式在遍歷這中list的實現類時, 可以根據這個標識來選擇更高效的遍歷方式

arraylist是如何自動增加的?

當給arraylist增加乙個物件時,首先會檢查該arraylist是否有足夠的容量來儲存這個新物件,如果沒有足夠的容量時,會建乙個新的更長的陣列,是舊陣列容量的1.5倍,舊的陣列會使用arrays.copyof方法被複製到新的陣列中去。現有的陣列引用指向新的陣列。

如何把乙個arraylist複製到另乙個arraylist中去?

clone()方法:arraylist newarray = oldarray.clone();

使用arraylist構造方法,比如:arraylist myobject = new arraylist(mytempobject);

使用collection的copy方法。

使用arrays.copyof()方法

arraylistarraylist = new arraylist<>(20)中list的擴充了幾次?
預設arraylist的長度是10個,所以如果你要往list裡新增20個元素肯定要擴充一次(newcapacity 擴充為原來的1.5倍,但和輸入的mincapacity相比發現小於mincapacity,於是 newcapacity = mincapacity,所以只擴容一次,具體見擴容裡的grow方法),但是這裡顯示指明了需要多少空間,所以就一次性為你分配這麼多空間,也就是不需要擴充了

面試題相關

一些位址 osi七層功能及協議 資料鏈路層是如何定址的?傳送方 已知接收方ip arp 接收方mac位址 交換機尋找該mac位址所在埠,把幀往這個埠 mac通過rarp轉為ip位址。可靠通訊是靠哪一層來完成的?網路層 tcp協議 100base t 100mbps,baseband,雙絞線對。簡而言...

常見面試題手寫ArrayList

public class myarraylist 無參建構函式 public myarraylist 含參建構函式 public myarraylist int initialcapacity catch exception e elementdata new object initialcapac...

前端面試題 css相關面試題

css 選擇器中,元素選擇器和類選擇器的區別是什麼?元素選擇器是最常見的 css 選擇器,即,文件的元素就是最基本的選擇器。選擇器通常是某個 html 元素,比如 等,甚至可以是 元素本身。類選擇器用於將樣式規則與附帶 class 屬性的元素匹配,其中該 class 屬性的值為類選擇器中指定的值。使...