積千里跬步,匯萬里江河.天天進步一點點,終有一天將成大佬數組
在Java中,不少地方都使用了數組和鏈表,還有兩種組合的叫數組鏈表結構,就是常說的哈希表,HashMap底層的數據結構就是哈希表.遠了,遠了,這裏不講HashMap,這裏講數組和鏈表;數據結構
數組是咱們平時用的最多的數據結構,它的特色是查詢數據快,插入數據慢,查詢的時間複雜度是O(1),插入的時間複雜度是O(n).app
牛*一族去學校讀書,學校有四人寢和五人寢,大牛,二牛,三牛,四牛一同住進了四人寢裏,天天都五缺一;有一天,他們在遊戲裏認識了小牛,得知小牛也是他們學校的,因而邀請小牛和他們一塊兒住,但是他們們寢室只能住四我的,這個怎麼辦呢?因而他們向學校(系統)申請,要求學校給他們一個新的六人寢(新的內存空間),因而學校就給了他們新的六人寢,因而他們所有都搬去了六人寢裏,小牛也辦了進去,以後天天五黑,好不快活;spa
以後有其餘學生看到牛*他們的作法,因而也統統向學校申請;最後學校發現了一個問題:就是學生們爲了住進新寢室,花費了大量的時間在從舊寢室到新寢室的路上(插入數據慢)3d
有的人會說,那一開始就安排大牛,二牛,三牛,四牛住5人寢不就行了嗎?這樣他們就不用搬了(這就至關於咱們初始化數組時,給數組指定了一個大小);這樣的想法是好的,可是若是他們沒有沒有認識小牛,小牛也不會搬進去,這樣他們四我的就一直住着5人寢,就形成了空間資源浪費;orm
有一天,老師去找進入新寢室的小牛談話,一看得知小牛在4號牀,一下就找到了小牛(查詢數據快),問他在這個寢室住的習不習慣,小牛心想,天天都五黑,你說我習不習慣!!cdn
鏈表咱們平時用的比較少,它的特色是:插入數據快,查詢數據慢,查詢的時間複雜度是:O(n),插入的時間複雜度是:O(1),它的特色是和數組相反的;blog
通過無很多天夜的奮戰,牛*一寢人以爲是時候該出去玩玩了,自從小牛搬過來後,就一直沒日沒夜的五黑,都快不知道外面的世界長什麼樣子了;他們一行人準備去遊樂園轉轉.遊戲
來到遊樂園後,一羣人像剛放出來的同樣,對一切都充滿了新鮮感,處處轉悠.就在轉悠的時候,細心的大牛發現了地上有一張紙條,打開一看,上面寫着:"少年,你渴望力量嗎?想得到力量就來海盜船找我!",大牛趕忙找來其餘小夥伴,一同前往;到了海盜船的地方,發現船上寫着:"力量源自摩天輪,請前往摩天輪",因而一羣人就又前往摩天輪,在那裏,終於過得了神祕力量---毒雞湯:你的心裏有多強大,你的力量就有多強大;小牛他們爲了尋找這個力量,可謂費盡九牛二虎之力啊(查詢數據慢);內存
能夠發現,每一個元素存着下個元素的地址,因此若是要查找其中某個元素,就必需要從頭開始,才能找到.這就比較慢了.可是,他們添加元素很快,元素能夠隨機出如今遊樂園的某個地方,只要在新添加元素的前一個元素指明新元素的地址在哪裏就能夠了;
數組 | 鏈表 | |
---|---|---|
插入 | O(n) 慢 | O(1) 快 |
刪除 | O(n) 慢 | O(1) 快 |
查詢 | O(1) 快 | O(n) 慢 |