【Flutter 學習筆記】Set 集合資料類型

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

在 Dart 程式語言中,Set(集合)是一種無序且不重複的資料結構,主要用於儲存唯一的元素。與 List(串列)不同,Set 不會保留元素的順序,並且不允許重複元素存在。本文將逐步介紹如何宣告 Set 以及常用的 Set 操作方法,幫助讀者更清楚地理解每個部分的功能和用途。

1. 宣告空 Set

要宣告一個空的 Set,我們可以使用以下語法:

var 集合名稱 = <資料型別>{};

實際範例

var mySet = <String>{};

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

2. 宣告 Set 並初始化

除了可以宣告空 Set 外,我們也可以在宣告 Set 的同時進行初始化。透過大括號 {} 包覆一組集合資料,並使用逗號 , 來分隔每一筆資料:

語法說明

var 集合名稱 = {元素1, 元素2, ...};

實際範例

var set1 = {10, 666, 168};
var set2 = {"HKT", "線上教室"};

在這個範例中,我們宣告了兩個 Set:

  • set1 是一個整數型別的 Set,包含三個元素:10、666 和 168。
  • set2 是一個字串型別的 Set,包含兩個元素:"HKT" 和 "線上教室"。

3. 新增資料到 Set

Set 是一種動態大小的資料結構,我們可以隨時新增或刪除元素,無需事先指定大小。要將資料新增到 Set 中,我們可以使用 add() 方法。

實際範例

set1.add(100);
set1.add(66);
set1.add(168); // 168 不會被新增,因為 Set 不允許重複元素
print(set1); // 輸出: {10, 666, 168, 100, 66}

在這段程式碼中,我們將數字 100、66 和 168 新增到 set1 中。值得注意的是,由於 Set 的特性,當我們試圖再次新增已經存在的元素(如:168)時,這個元素將不會被重複新增。

4. 刪除指定的元素

若想要從 Set 中刪除特定的元素,可以使用 remove() 方法。以下示範如何將數字 666 從 set1 中刪除:

實際範例

set1.remove(666);
print(set1); // 輸出: {10, 168, 100, 66}

5. 取得 Set 的大小

我們可以使用 length 屬性來取得 Set 中目前的元素總數。這個屬性能夠輕鬆地了解 Set 的大小。

實際範例

void main() {
var set1 = {10, 666, 168};
print(set1.length); // 輸出: 3
}

6. 清除 Set 所有元素

若想要清空 Set 中的所有元素,可以使用 clear() 方法。這個方法會將 Set 中的所有元素刪除,使其變為空 Set 的狀態。

實際範例

set1.clear();
print(set1); // 輸出: {}

7. Set 的交集、聯集與差集

Set 除了能儲存不重複的元素外,還支援多種集合運算,包括交集、聯集和差集。這些運算在處理資料時非常實用,特別是在需要進行集合比較的情境中。

實際範例

void main() {
var setA = {1, 2, 3};
var setB = {3, 4, 5};

// 聯集
var unionSet = setA.union(setB);
print("聯集: $unionSet"); // 輸出: 聯集: {1, 2, 3, 4, 5}

// 交集
var intersectionSet = setA.intersection(setB);
print("交集: $intersectionSet"); // 輸出: 交集: {3}

// 差集
var differenceSet = setA.difference(setB);
print("差集: $differenceSet"); // 輸出: 差集: {1, 2}
}

在這個範例中,我們展示了三種集合運算:

聯集 (Union)

聯集運算會將兩個集合中的所有元素合併,並自動去除重複的部分。在上述範例中,setAsetB 的聯集結果為 {1, 2, 3, 4, 5}

交集 (Intersection)

交集運算會找出兩個集合中共同的元素。在這個例子中,setAsetB 的交集結果是 {3},因為只有數字 3 同時存在於兩個集合中。

差集 (Difference)

差集運算則是從第一個集合中去除所有在第二個集合中也存在的元素。在範例中,setAsetB 的差集結果為 {1, 2},因為這兩個數字只在 setA 中出現。

結論

這些集合運算不僅能讓我們更方便地處理資料,還能幫助我們在開發過程中進行更複雜的邏輯判斷。透過這些操作,開發者可以更有效率地管理和分析資料集。例如,在處理使用者權限、資料比對或是資料過濾等場景中,這些集合運算都能發揮重要作用。

avatar-img
10會員
233內容數
哈囉!歡迎光臨我的沙龍!我是 KT,一位對應用程式開發充滿熱情的開發者。在這個專屬空間,我將與您分享我在應用開發領域的深入學習心得和豐富的實戰經驗。如果您對應用程式開發技術同樣充滿好奇,渴望不斷探索新知,歡迎成為我們的會員,一起在應用程式開發的旅途上,探索更深層次的技術世界,享受學習的樂趣。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
HKT實驗室 的其他內容
本文中,我們深入探討了 Dart 中的 Map(映射)資料結構,學習了如何宣告、初始化、更新、刪除以及走訪 Map 中的鍵值對。Map 是一個非常靈活且強大的資料結構,適合用於各種需要快速查詢的場景。
在本文中,我們深入探討了 Dart 中的 List(串列)資料結構,從宣告、初始化、資料操作到清空串列,逐步介紹了各種常用的方法。透過這些操作,開發者可以靈活地管理和操作資料集合,提升程式的可讀性和維護性。
本篇文章介紹 switch-case 多重條件判斷工具,適合處理多個可能的值。透過 switch 敘述,開發者可以根據表達式的值執行對應的 case 區塊,並使用 default 區塊來處理未列舉的情況。
本文將深入探討巢狀 if 條件式,並透過範例詳細說明其實作原理。這種結構能夠提供靈活且豐富的條件判斷,但在使用時需注意避免過度嵌套,以確保程式碼的可讀性和可維護性。
在 Dart 程式語言中,if 多條件判斷結構允許處理複雜邏輯,根據第一個成立的條件執行相應程式碼。語法包括多個條件的檢查,並可用於實際範例,如根據考試分數判斷成績等級。此結構在成績評定、折扣計算等應用中非常常見。
這篇文章介紹了 Dart 程式語言中的 if-else 條件控制結構。透過 if 語句,我們可以根據條件的真假來執行不同的程式碼。文章提供了一個年齡判斷的範例,當年齡大於或等於 18 時,輸出允許進入酒吧的訊息;否則,則輸出禁止進入的訊息。
本文中,我們深入探討了 Dart 中的 Map(映射)資料結構,學習了如何宣告、初始化、更新、刪除以及走訪 Map 中的鍵值對。Map 是一個非常靈活且強大的資料結構,適合用於各種需要快速查詢的場景。
在本文中,我們深入探討了 Dart 中的 List(串列)資料結構,從宣告、初始化、資料操作到清空串列,逐步介紹了各種常用的方法。透過這些操作,開發者可以靈活地管理和操作資料集合,提升程式的可讀性和維護性。
本篇文章介紹 switch-case 多重條件判斷工具,適合處理多個可能的值。透過 switch 敘述,開發者可以根據表達式的值執行對應的 case 區塊,並使用 default 區塊來處理未列舉的情況。
本文將深入探討巢狀 if 條件式,並透過範例詳細說明其實作原理。這種結構能夠提供靈活且豐富的條件判斷,但在使用時需注意避免過度嵌套,以確保程式碼的可讀性和可維護性。
在 Dart 程式語言中,if 多條件判斷結構允許處理複雜邏輯,根據第一個成立的條件執行相應程式碼。語法包括多個條件的檢查,並可用於實際範例,如根據考試分數判斷成績等級。此結構在成績評定、折扣計算等應用中非常常見。
這篇文章介紹了 Dart 程式語言中的 if-else 條件控制結構。透過 if 語句,我們可以根據條件的真假來執行不同的程式碼。文章提供了一個年齡判斷的範例,當年齡大於或等於 18 時,輸出允許進入酒吧的訊息;否則,則輸出禁止進入的訊息。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
這篇內容,將會講解什麼是資料型態,以及與資料型態相關的知識。包括資料型態的簡介、實數、布林值、 字串、陣列。
Thumbnail
本章節的目的是介紹 Kotlin 的各種資料型別。包括內建型別如基本數值型別、字串型別和布林型別等,以及如何進行型別轉換。此外,也介紹了如何定義自訂型別(類)和元組型別,以及 Kotlin 提供的集合型別,例如列表(List)、集合(Set)和映射(Map)以及陣列(Array)。
Thumbnail
有個簡單的方法,把儲存格的文字串連起來!一起來看看怎麼做,很好操作唷!
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
這篇內容,將會講解什麼是資料型態,以及與資料型態相關的知識。包括資料型態的簡介、實數、布林值、 字串、陣列。
Thumbnail
本章節的目的是介紹 Kotlin 的各種資料型別。包括內建型別如基本數值型別、字串型別和布林型別等,以及如何進行型別轉換。此外,也介紹了如何定義自訂型別(類)和元組型別,以及 Kotlin 提供的集合型別,例如列表(List)、集合(Set)和映射(Map)以及陣列(Array)。
Thumbnail
有個簡單的方法,把儲存格的文字串連起來!一起來看看怎麼做,很好操作唷!