點燈坊

失くすものさえない今が強くなるチャンスよ

Dart 之 Set Type

Sam Xiao's Avatar 2024-07-23

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 觀念完全一樣,只是語法稍有不同

Reference

Dart, Set