資料結構筆記 :陣列 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
1會員
8內容數
您好, 目前是軟體工程師 Krist
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
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