【Flutter 學習筆記】 List(串列)集合資料類型

閱讀時間約 7 分鐘
raw-image
【Flutter 學習筆記】線上課程教學影片:連結
【Flutter 學習筆記】系列文章目錄:連結

在 Dart 程式語言中,List(串列)是一種非常重要的資料結構,它能夠儲存有序的元素集合。每個元素都有一個從 0 開始的索引值,這使得 List 在許多應用場景中都非常實用。本文將詳細介紹如何宣告 List 以及常用的 List 操作方法,並逐步拆解程式碼,幫助讀者更清楚地理解每個部分的功能和用途。

宣告空串列 List

在 Dart 中,宣告一個空的 List 非常簡單。以下是語法和範例:

// 語法說明
var 串列名稱 = <資料型別>[];

// 實際範例
var myList = <String>[];

在這個範例中,我們使用中括號 [] 來表示一個空的串列。myList 被初始化為一個空的串列,這意味著它可以儲存多個字串型別的元素,但目前尚未包含任何元素。

宣告串列 List 並初始化串列

除了可以宣告空串列外,我們也可以在宣告的同時進行初始化。以下是語法和範例:

// 語法說明
var 串列名稱 = [元素1, 元素2, ...];

// 實際範例
var list1 = [10, 666, 168];
var list2 = ["HKT", "線上教室"];
var list3 = ["HKT", 777, "線上教室", 888]; // 資料型別,不建議混合使用

在這個範例中,我們宣告了三個 List 串列:

  • list1 是一個整數型別的串列,包含三個元素:10、666 和 168。list2 是一個字串型別的串列,包含兩個元素:"HKT" 和 "線上教室"。list3 是一個混合型別的串列,包含字串和整數元素。雖然 Dart 支援混合型別的串列,但在實際開發中,建議保持資料型別的一致性,以確保程式碼的可讀性和維護性。

新增資料到 List

在 Dart 中,List 是一種動態大小的資料結構,我們可以隨時新增或刪除元素。使用 add() 方法可以將資料新增至 List 的尾端:

// 使用 add 方法將資料新增到 list1 中
list1.add(100);
list1.add(66);
list1.add(168);
list1.add(777);
print(list1); // 輸出: [10, 666, 168, 100, 66, 168, 777]

透過索引值修改 List 特定一筆資料

我們可以透過索引值來修改 List 中特定的一筆資料。以下是範例:

// 指定修改 list1 索引值為 2 的資料
list1[2] = 333; // 覆蓋掉之前的 168,更新為 333
print(list1); // 輸出: [10, 666, 333, 100, 66, 168, 777]

透過索引值存取 List 特定一筆資料

同樣地,我們可以透過索引值來存取 List 中的特定資料:

// 存取資料
print(list1[0]); // 輸出: 10
print(list1[1]); // 輸出: 666
print(list1[2]); // 輸出: 333

在存取 List 的元素時,請特別注意索引值必須在 List 的範圍內,否則會引發 RangeError 例外。

取得 List 的長度

我們可以使用 length 屬性來取得 List 中目前的元素總數。以下是具體的示範程式碼:

void main() {
var list1 = [10, 666, 168];

list1.add(100);
list1.add(66);
list1.add(168);
list1.add(777);

// 取得 list1 長度
print(list1.length); // 輸出: 7
}

使用 length 屬性可以快速取得 List 的元素數量,這在進行迴圈操作或需要知道 List 大小的場景中特別有用。

插入新元素

若要在指定的索引位置插入新的元素,可以使用 insert 方法。以下範例展示如何在索引值 1 的位置插入整數 999:

// 插入資料
list1.insert(1, 999);
print(list1); // 輸出: [10, 999, 666, 333, 100, 66, 168, 777]

在這個範例中,我們將數字 999 插入到 list1 的索引 1 位置,原本在該位置的元素會自動向後移動。

刪除指定的元素

若想要從串列中刪除特定的元素,可以使用 remove 方法。以下示範如何將數字 666 和 100 從 list1 中刪除:

// 刪除資料
list1.remove(666);
list1.remove(100);
print(list1); // 輸出: [10, 999, 333, 66, 168, 777]

在這裡,我們使用 remove 方法刪除了指定的元素,List 會自動調整索引。

List 排序

若希望對一個 List 進行排序,可以使用 sort 方法。此方法會將 List 中的元素按照從小到大的順序進行排列:

// 由小到大的排序
list1.sort();
print(list1); // 輸出: [10, 66, 168, 333, 777, 999]

如果想要將 List 由大到小排序,可以自訂比較函式進行降冪排序:

// 由大到小排序
list1.sort((a, b) => b.compareTo(a));
print(list1); // 輸出: [999, 777, 333, 168, 66, 10]

清除 List 所有元素

若想要清空 List 中的所有元素,可以使用 clear 方法。此方法會將 List 中的所有元素刪除,使其變為空串列的狀態:

// 清空 list1
list1.clear();
print(list1); // 輸出: []

這樣一來,list1 就變成了一個空的串列,隨時可以重新添加元素。

總結

在本文中,我們深入探討了 Dart 中的 List(串列)資料結構,從宣告、初始化、資料操作到清空串列,逐步介紹了各種常用的方法。透過這些操作,開發者可以靈活地管理和操作資料集合,提升程式的可讀性和維護性。

8會員
225內容數
哈囉!歡迎光臨我的沙龍!我是 KT,一位對應用程式開發充滿熱情的開發者。在這個專屬空間,我將與您分享我在應用開發領域的深入學習心得和豐富的實戰經驗。如果您對應用程式開發技術同樣充滿好奇,渴望不斷探索新知,歡迎成為我們的會員,一起在應用程式開發的旅途上,探索更深層次的技術世界,享受學習的樂趣。
留言0
查看全部
發表第一個留言支持創作者!
HKT實驗室 的其他內容
本篇文章介紹 switch-case 多重條件判斷工具,適合處理多個可能的值。透過 switch 敘述,開發者可以根據表達式的值執行對應的 case 區塊,並使用 default 區塊來處理未列舉的情況。
本文將深入探討巢狀 if 條件式,並透過範例詳細說明其實作原理。這種結構能夠提供靈活且豐富的條件判斷,但在使用時需注意避免過度嵌套,以確保程式碼的可讀性和可維護性。
在 Dart 程式語言中,if 多條件判斷結構允許處理複雜邏輯,根據第一個成立的條件執行相應程式碼。語法包括多個條件的檢查,並可用於實際範例,如根據考試分數判斷成績等級。此結構在成績評定、折扣計算等應用中非常常見。
這篇文章介紹了 Dart 程式語言中的 if-else 條件控制結構。透過 if 語句,我們可以根據條件的真假來執行不同的程式碼。文章提供了一個年齡判斷的範例,當年齡大於或等於 18 時,輸出允許進入酒吧的訊息;否則,則輸出禁止進入的訊息。
文章介紹了 Dart 程式語言中的 if 條件敘述,解釋其基本語法及運作方式,並透過範例展示如何根據條件執行程式碼。
本文介紹了常用的比較運算符,包括等於(==)、不等於(!=)、大於(>)、小於(<)、大於等於(>=)和小於等於(<=)。透過範例程式碼,讀者可以理解這些運算符的功能,例如檢查變數 a 和 b 的大小關係,並學習如何利用這些運算符進行邏輯判斷。
本篇文章介紹 switch-case 多重條件判斷工具,適合處理多個可能的值。透過 switch 敘述,開發者可以根據表達式的值執行對應的 case 區塊,並使用 default 區塊來處理未列舉的情況。
本文將深入探討巢狀 if 條件式,並透過範例詳細說明其實作原理。這種結構能夠提供靈活且豐富的條件判斷,但在使用時需注意避免過度嵌套,以確保程式碼的可讀性和可維護性。
在 Dart 程式語言中,if 多條件判斷結構允許處理複雜邏輯,根據第一個成立的條件執行相應程式碼。語法包括多個條件的檢查,並可用於實際範例,如根據考試分數判斷成績等級。此結構在成績評定、折扣計算等應用中非常常見。
這篇文章介紹了 Dart 程式語言中的 if-else 條件控制結構。透過 if 語句,我們可以根據條件的真假來執行不同的程式碼。文章提供了一個年齡判斷的範例,當年齡大於或等於 18 時,輸出允許進入酒吧的訊息;否則,則輸出禁止進入的訊息。
文章介紹了 Dart 程式語言中的 if 條件敘述,解釋其基本語法及運作方式,並透過範例展示如何根據條件執行程式碼。
本文介紹了常用的比較運算符,包括等於(==)、不等於(!=)、大於(>)、小於(<)、大於等於(>=)和小於等於(<=)。透過範例程式碼,讀者可以理解這些運算符的功能,例如檢查變數 a 和 b 的大小關係,並學習如何利用這些運算符進行邏輯判斷。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
這篇內容,將會講解什麼是陣列,以及與陣列相關的知識。包括陣列的簡介、陣列的資料限制、陣列的維度、一維陣列、二維陣列。
上兩篇有關List的文章,此篇文上兩章的延續,整理一些常用的方法和操作。 [Python]List(列表)新增、修改、刪除元素 [Python基礎]容器 list(列表),tuple(元組) 還有一些常用的 list 方法和操作,讓你能更靈活地處理列表數據
Thumbnail
一般在使用 TypeScript 的時候,大家都有遇過定義列舉資料的情境吧。 不過不管是 enum 和 literal 的方式其實都有些小缺點,以下推薦一個個人認為體驗更好的方式。
Thumbnail
此章節旨在介紹Java程式語言中的各種資料型別,包括基本型別、引用型別、集合型別、陣列型別、字典型別等。它還講解了如何在Java中進行型別轉換和自定義型別,並提供了相關的程式碼示例。
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
# 簡介 身為一位專注於 Vue.js 的前端開發者,這是我第一次嘗試構建 Flutter 網頁應用。讓我們開始吧! ## 第一次嘗試 ### 第一步:創建一個 Flutter 應用 首先,通過運行以下命令來創建一個新的 Flutter 項目: ```sh flutter
Thumbnail
本章節旨在介紹 TypeScript 的基本資料型別,包括內建型別、型別轉換、自訂型別、元組、集合、陣列、和字典型別。透過理解和使用這些型別,可以提高代碼的可讀性和可維護性。
Thumbnail
題目敘述 題目會給我們一組定義好的界面和需求,要求我們設計一個資料結構,可以滿足平均O(1)的插入元素、刪除元素、隨機取得元素的操作。 RandomizedSet() 類別建構子 bool insert(int val) 插入元素的function界面 bool remove(int val
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
這篇內容,將會講解什麼是陣列,以及與陣列相關的知識。包括陣列的簡介、陣列的資料限制、陣列的維度、一維陣列、二維陣列。
上兩篇有關List的文章,此篇文上兩章的延續,整理一些常用的方法和操作。 [Python]List(列表)新增、修改、刪除元素 [Python基礎]容器 list(列表),tuple(元組) 還有一些常用的 list 方法和操作,讓你能更靈活地處理列表數據
Thumbnail
一般在使用 TypeScript 的時候,大家都有遇過定義列舉資料的情境吧。 不過不管是 enum 和 literal 的方式其實都有些小缺點,以下推薦一個個人認為體驗更好的方式。
Thumbnail
此章節旨在介紹Java程式語言中的各種資料型別,包括基本型別、引用型別、集合型別、陣列型別、字典型別等。它還講解了如何在Java中進行型別轉換和自定義型別,並提供了相關的程式碼示例。
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
# 簡介 身為一位專注於 Vue.js 的前端開發者,這是我第一次嘗試構建 Flutter 網頁應用。讓我們開始吧! ## 第一次嘗試 ### 第一步:創建一個 Flutter 應用 首先,通過運行以下命令來創建一個新的 Flutter 項目: ```sh flutter
Thumbnail
本章節旨在介紹 TypeScript 的基本資料型別,包括內建型別、型別轉換、自訂型別、元組、集合、陣列、和字典型別。透過理解和使用這些型別,可以提高代碼的可讀性和可維護性。
Thumbnail
題目敘述 題目會給我們一組定義好的界面和需求,要求我們設計一個資料結構,可以滿足平均O(1)的插入元素、刪除元素、隨機取得元素的操作。 RandomizedSet() 類別建構子 bool insert(int val) 插入元素的function界面 bool remove(int val