【Flutter 學習筆記】線上課程教學影片:連結
【Flutter 學習筆記】系列文章目錄:連結
在 Dart 程式語言中,Set(集合)是一種無序且不重複的資料結構,主要用於儲存唯一的元素。與 List(串列)不同,Set 不會保留元素的順序,並且不允許重複元素存在。本文將逐步介紹如何宣告 Set 以及常用的 Set 操作方法,幫助讀者更清楚地理解每個部分的功能和用途。
要宣告一個空的 Set,我們可以使用以下語法:
var 集合名稱 = <資料型別>{};
var mySet = <String>{};
在這個範例中,我們使用大括號 {}
來表示一個空的 Set。mySet
被初始化為一個空的 Set,意味著它可以儲存多個字串型別的元素,但目前尚未包含任何元素。
除了可以宣告空 Set 外,我們也可以在宣告 Set 的同時進行初始化。透過大括號 {}
包覆一組集合資料,並使用逗號 ,
來分隔每一筆資料:
var 集合名稱 = {元素1, 元素2, ...};
var set1 = {10, 666, 168};
var set2 = {"HKT", "線上教室"};
在這個範例中,我們宣告了兩個 Set:
set1
是一個整數型別的 Set,包含三個元素:10、666 和 168。set2
是一個字串型別的 Set,包含兩個元素:"HKT" 和 "線上教室"。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)時,這個元素將不會被重複新增。
若想要從 Set 中刪除特定的元素,可以使用 remove()
方法。以下示範如何將數字 666 從 set1
中刪除:
set1.remove(666);
print(set1); // 輸出: {10, 168, 100, 66}
我們可以使用 length
屬性來取得 Set 中目前的元素總數。這個屬性能夠輕鬆地了解 Set 的大小。
void main() {
var set1 = {10, 666, 168};
print(set1.length); // 輸出: 3
}
若想要清空 Set 中的所有元素,可以使用 clear()
方法。這個方法會將 Set 中的所有元素刪除,使其變為空 Set 的狀態。
set1.clear();
print(set1); // 輸出: {}
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}
}
在這個範例中,我們展示了三種集合運算:
聯集運算會將兩個集合中的所有元素合併,並自動去除重複的部分。在上述範例中,setA
和 setB
的聯集結果為 {1, 2, 3, 4, 5}
。
交集運算會找出兩個集合中共同的元素。在這個例子中,setA
和 setB
的交集結果是 {3}
,因為只有數字 3 同時存在於兩個集合中。
差集運算則是從第一個集合中去除所有在第二個集合中也存在的元素。在範例中,setA
和 setB
的差集結果為 {1, 2}
,因為這兩個數字只在 setA
中出現。
這些集合運算不僅能讓我們更方便地處理資料,還能幫助我們在開發過程中進行更複雜的邏輯判斷。透過這些操作,開發者可以更有效率地管理和分析資料集。例如,在處理使用者權限、資料比對或是資料過濾等場景中,這些集合運算都能發揮重要作用。