一、什麼是陣列?什麼是鍊錶?
(相關面試題推薦:java面試題)
數組就像身上編了號站成一排的人,要找第10個人很容易,根據人身上的編號很快就能找到。但插入、刪除慢,要望某個位置插入或刪除一個人時,後面的人身上的編號都要變。當然,加入或刪除的人始終末尾的也快。
鍊錶是一種上一個元素的引用指向下一個元素的儲存結構,鍊錶透過指標來連接元素與元素;
鍊錶就像手牽手站成一圈的人,要找第10個人不容易,必須從第一個人一個個數過去。但插入、刪除快。插入時只要解開兩個人的手,並重新牽上新加進來的人的手就可以。刪除一樣的道理。
Java中,ArrayList、LinkedList就是分別用陣列和鍊錶做內部實作的。
二、陣列和鍊錶有什麼區別
不同:鍊錶是鍊式的儲存結構;陣列是順序的儲存結構。
鍊錶透過指標來連接元素與元素,數組則是把所有元素依序儲存。
(相關教學建議:java入門教學)
鍊錶的插入刪除元素相對陣列較為簡單,不需要移動元素,且較為容易實現長度擴充,但是尋找某個元素較為困難;
數組尋找某個元素較為簡單,但插入與刪除比較複雜,由於最大長度需要再編程一開始時指定,故當達到最大長度時,擴充長度不如鍊錶方便。
相同:兩種結構皆可實現資料的順序存儲,建構出來的模型呈線性結構。
三、java集合與陣列的特性
陣列特點:大小固定,只能儲存相同資料類型的資料
集合特徵:大小可動態擴展,可儲存各種類型的資料
(相關影片教學推薦:java影片教學)
四、LinkedList底層實作方式
LinkedList是透過雙向鍊錶去實現的,既然是鍊錶實現那麼它的隨機存取效率比ArrayList要低,順序存取的效率要比較的高。每個節點都有一個前驅(之前前面節點的指標)和一個後繼(指向後面節點的指標),效果如下圖:
##1、使用for適合循環ArrayLIst以及數組,當大批量的循環LinkedList時程式將會卡死,for適合循環數組結構,透過下標去遍歷。 2、使用foreach適合循環LinkedList,使用雙鍊錶結構實作的應當使用foreach迴圈。以上是java經典面試題集錦(六)的詳細內容。更多資訊請關注PHP中文網其他相關文章!