Skip to Content

Set trong Dart

1. Giới thiệu

Set là collection chứa các phần tử duy nhất, không có thứ tự.

2. Khai báo Set

void main() { // Với type annotation Set<int> numbers = {1, 2, 3}; // Với var var fruits = {'apple', 'banana', 'orange'}; // Set rỗng Set<String> empty = {}; var empty2 = <int>{}; }

3. Các thao tác cơ bản

void main() { var numbers = {1, 2, 3}; // Thêm phần tử numbers.add(4); numbers.addAll({5, 6}); // Xóa phần tử numbers.remove(1); // Kiểm tra print(numbers.contains(2)); // true print(numbers.length); // 5 print(numbers.isEmpty); // false }

4. Tính chất duy nhất

void main() { var numbers = {1, 2, 2, 3, 3, 3}; print(numbers); // {1, 2, 3} numbers.add(2); // Không thêm được vì đã có print(numbers); // {1, 2, 3} }

5. Phép toán tập hợp

void main() { var a = {1, 2, 3, 4}; var b = {3, 4, 5, 6}; // Hợp (Union) print(a.union(b)); // {1, 2, 3, 4, 5, 6} // Giao (Intersection) print(a.intersection(b)); // {3, 4} // Hiệu (Difference) print(a.difference(b)); // {1, 2} }

6. Duyệt Set

void main() { var fruits = {'apple', 'banana', 'orange'}; // for-in for (var fruit in fruits) { print(fruit); } // forEach fruits.forEach((f) => print(f)); }

7. Chuyển đổi

void main() { // List -> Set (loại bỏ trùng lặp) var list = [1, 2, 2, 3, 3, 3]; var set = list.toSet(); print(set); // {1, 2, 3} // Set -> List var backToList = set.toList(); print(backToList); // [1, 2, 3] }

8. Set với Object

class Person { final String name; Person(this.name); @override bool operator ==(Object other) => other is Person && other.name == name; @override int get hashCode => name.hashCode; } void main() { var people = {Person('Alice'), Person('Alice')}; print(people.length); // 1 }

📝 Tóm tắt

  • Set chứa phần tử duy nhất
  • Hỗ trợ union, intersection, difference
  • Chuyển List → Set để loại trùng lặp
  • Override == và hashCode cho Object
Last updated on