vocus logo

方格子 vocus

資料結構筆記 :陣列 vs 串列

更新 發佈閱讀 4 分鐘

相信很多初學者對於陣列和串列常常會搞不清楚, 在寫程式的時候常常不知道該使用哪一個, 這篇文章可以讓你快速了解其中的差別

什麼是陣列 (Array)

固定大小的置物櫃排

陣列就像是一個固定大小的置物櫃排, 其有以下幾項的特性

  1. 固定大小 : 一開始建立陣列時就比需要決定他能存多少資料, 之後是無法改變。
  2. 每格資料型態相同:例如全部都是整數, 或者其他全部都是字串。
  3. 透過編號 (Index) 快速存取 : 例如 array[0], array[1], 速度很快。


raw-image


Java 為例

int[] numbers = new int[5] // 建立一個長度為 5 的 int 陣列​

int[] numbers = {10, 20, 30, 40, 50}; // 一開始就給初始數值​

陣列在什麼情況下好用 ?

  • 資料數量固定時 (例如一年固定 12 個月)。
  • 需要速度快, 操作簡單。
  • 每個元素都是同一種資料型態。

什麼是串列 (List)

可以一直加格子的置物籃

串列就像是置物籃上面可以持續的加入掛勾, 以下是串列的特性

  1. 大小可變 : 想加入資料就加入, 想刪就刪。
  2. 資料型態可以不同 : 同一個串列可以放字串,數字,布林值等不同類型。
  3. 存取速度比陣列稍慢:因為不是固定長度的連續記憶空間。

Java 為例

Java 的串列指的是 List 介面, 最常用的實作是:ArrayListLinkedList

其中兩者差別主要在 LinkedList 的記憶體位置不連續, 每個節點都包含 data + 下一個節點的位址 (指標) , 而 ArrayList 在記憶體中的位置是連續的, 如果裝滿需要整排換到更大的空間。

import java.util.ArrayList;

public class Main {
public static void main(String[] args) {

// 創建新的物件
ArrayList<Integer> list = new ArrayList<>();

// 增加數值進去
list.add(1);
list.add(2);

​list.remove(Integer.valueOf(3)) // 移除數字3

// 取得數值
list.get(1);
}
}

什麼時候使用 ArrayList

常用功能是讀取資料 get(Index), 不常在中間插入或刪除, 資料量大但讀取比變動多, 存取入度較快。

典型例子 : 成績表 商品清單 玩家列表 排行榜

什麼時候使用 LinkedList

常常需要在中間或頭部插入 / 刪除, 幾乎不需要使用 get(index) 來找資料, 讀取速度慢城市當中比較少用。

典型例子 : 佇列 Queue Deque, 多比資料需要頻繁插入刪除

總結

  • Array(陣列):固定大小、速度快、型態統一。
  • List / ArrayList(串列):大小可變、功能多、用來處理不固定數量的資料。











留言
avatar-img
Krist
2會員
11內容數
您好, 目前是軟體工程師 Krist
你可能也想看
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
深入淺出遞迴函式與動態規劃的原理與應用,透過費氏數列案例比較兩種方法的效率,並說明動態規劃的優勢與實作技巧,提升程式設計能力。
Thumbnail
深入淺出遞迴函式與動態規劃的原理與應用,透過費氏數列案例比較兩種方法的效率,並說明動態規劃的優勢與實作技巧,提升程式設計能力。
Thumbnail
本文提供軟體工程師面試常考的樹狀結構(Tree)相關知識,包含樹的基本概念、常見術語、二元樹、二元搜尋樹、樹的遍歷(DFS 與 BFS)、以及經典題目 Validate Binary Search Tree 的 JavaScript 解法與核心思路。
Thumbnail
本文提供軟體工程師面試常考的樹狀結構(Tree)相關知識,包含樹的基本概念、常見術語、二元樹、二元搜尋樹、樹的遍歷(DFS 與 BFS)、以及經典題目 Validate Binary Search Tree 的 JavaScript 解法與核心思路。
Thumbnail
什麼是雜湊表?—— 鍵值對的抽象資料型態 想像一下,你有一本非常厚的通訊錄。如果這本通訊錄是按照每個人的姓名首字母排序的,當你想找「王小明」的電話時,你可以迅速翻到「W」的開頭,然後快速找到他。雜湊表就
Thumbnail
什麼是雜湊表?—— 鍵值對的抽象資料型態 想像一下,你有一本非常厚的通訊錄。如果這本通訊錄是按照每個人的姓名首字母排序的,當你想找「王小明」的電話時,你可以迅速翻到「W」的開頭,然後快速找到他。雜湊表就
Thumbnail
在資料結構中,除了後進先出的 Stack,另一個常見且實用的就是 Queue(佇列)。它是許多系統背後默默運作的重要機制,例如排程器、印表機佇列、網路封包、事件處理機制等。 這篇筆記將帶你從零理解 Que
Thumbnail
在資料結構中,除了後進先出的 Stack,另一個常見且實用的就是 Queue(佇列)。它是許多系統背後默默運作的重要機制,例如排程器、印表機佇列、網路封包、事件處理機制等。 這篇筆記將帶你從零理解 Que
Thumbnail
這篇文章深入淺出地介紹堆疊(Stack)這種資料結構,包含其定義、特性、操作流程、JavaScript實作範例、應用場景(例如:回溯、瀏覽器上一頁功能、深度優先搜尋等),以及LeetCode相關題目。文末提供延伸學習資源,並鼓勵讀者提出學習需求。
Thumbnail
這篇文章深入淺出地介紹堆疊(Stack)這種資料結構,包含其定義、特性、操作流程、JavaScript實作範例、應用場景(例如:回溯、瀏覽器上一頁功能、深度優先搜尋等),以及LeetCode相關題目。文末提供延伸學習資源,並鼓勵讀者提出學習需求。
Thumbnail
軟體工程師職涯升級計畫啟動!本文深入探討陣列與串列這兩種基礎資料結構,比較其特性、優缺點與常見操作,並輔以JavaScript範例程式碼及時間複雜度分析,幫助讀者學習如何根據不同情境選擇合適的資料結構,寫出更高效的程式。
Thumbnail
軟體工程師職涯升級計畫啟動!本文深入探討陣列與串列這兩種基礎資料結構,比較其特性、優缺點與常見操作,並輔以JavaScript範例程式碼及時間複雜度分析,幫助讀者學習如何根據不同情境選擇合適的資料結構,寫出更高效的程式。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News