iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0
Software Development

奶茶裡藏的資料結構(Kotlin範例)系列 第 15

當活動場地爆滿時——ArrayList 與 LinkedList 的抉擇

  • 分享至 

  • xImage
  •  

雖然撲克牌接龍能幫助我想像 Linked List 的連接關係,但卻不能完全對應,尤其是「指標」這個概念,越看越覺得抽象。

正好學長來找室友打網球,我便厚著臉皮攔下來請教。

「嘿,你的想法挺有意思。」學長笑著說,「不過我平常是從另一個角度來切入,把相似用途的拿來比較,比如 ArrayList。」

「ArrayList?」我眨了眨眼。

「嗯,ArrayList 的底層其實就是 array,只是它幫你處理了大小不夠的問題。想像一下,你辦活動租了場地,但來的人比預期多,空間不夠了。ArrayList 的做法就是——換個更大的場地,把所有人搬過去。」

「喔,聽起來不錯啊!」

「對,但把人一個個搬過去要花時間啊,而且搬完才能退掉前一個場地,所以那段時間你兩個場地都要付錢。」他笑笑,「至於 LinkedList,就不同了。它不會退掉場地,而是在門口掛一個牌子寫:『滿了,請到下一個場地』。這個牌子就是指標。人們需要先到第一個場地,再跟著牌子去第二個、第三個⋯⋯」

「咦,那最晚來的人要跑好幾個場地啊!」我忍不住驚呼。

「沒錯,這就是 LinkedList 的缺點——查找麻煩。但它的優點是彈性大。如果某個場地出問題,只要換個告示牌就好,不用像 ArrayList 一樣整批搬家。所以插入、刪除這類操作比較方便。」學長語氣輕快的說:「而 ArrayList 的強項就是查找快,因為大家都集中在同一個場地,想找誰一眼就能找到。」


上一篇
突然好想玩撲克牌接龍
系列文
奶茶裡藏的資料結構(Kotlin範例)15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言