Dart 提供 3 種 Collection,Set 為其中之一,與 JavaScript 的 Set 相同。
Version
Dart 3.5
Mutable Set
void main() {
var set1 = {1, 2, 3};
var set2 = <int>{1, 2, 3};
Set<int> set3 = {1, 2, 3};
set1.add(3);
print(set1); // {1, 2, 3}
}
- 可使用
var
的 Type Inference 宣告的 Set,並使用{}
建立 Set var
亦可在等號右側加上<int>
限定 Set 內 element 的 type- 亦可使用
Set <int>
直接宣告 Set 與 element 的 type - Set 可自由地
新增
、修改
、刪除
與清空
Set 內的 element,若重複則無法再新增 - 可將 Set 視為
不重複
的 List
Immutable Set
void main() {
var set1 = const {1, 2, 3};
const set2 = {1, 2, 3};
const set3 = <int>{1, 2, 3};
const Set<int> set4 = {1, 2, 3};
set1.add(4); // X add
print('set1: $set1');
}
- 可加上
const
宣告為 Immutable Set - Immutable Set 無法對 List 內的 element
新增
、修改
、刪除
與清空
List to Set
void main() {
var list1 = [1, 2, 3, 3];
var list2 = list1.toSet().toList();
print(list1); // [1, 2, 3, 3]
print(list2); // [1, 2, 3]
}
- 由於 Set 不重複的特性,若想將重複的 List 轉成不重複的 List,可先使用
toSet()
將 List 轉成 Set,在使用toList()
將不重複的 Set 轉成 List
Conclusion
- Dart 的 Set 與 JavaScript 觀念完全一樣,只是語法稍有不同