Tập hợp trong Swift

Tập hợp khá giống với mảng ở phần trước, khác biệt là nó không có một thứ tự cho các phần tử. Sử dụng tập hợp thay thế cho mảng nếu bạn cần dữ liệu dạng không thứ tự, và mỗi giá trị chỉ được phép xuất hiện trong tập hợp một lần. Để khai báo biến là tập hợp thì khai báo kiểu đầy đủ là Set<T> với T là kiểu phần tử. Bạn cũng có thể khởi tạo ngay giá trị các phần tử trong tập hợp, ví du:

//Tạo một tập rỗng, phần tử kiểu ký tự
var letters = Set>Character<()

//Tạo một tập hợp kiểu String, khởi tạo nó với 3 phần tử
var products: Set = ["Iphone", "Ipad", "Sony"]
//Hoặc var products: Set = ["Iphone", "Ipad", "Sony"]

Truy cập và sửa đổi tập hợp

  • Thuộc tính isEmpty : kiểm tra xem tập có rỗng
  • Thuộc tính count : lấy số lượng phần tử trong tập hợp
  • Phương thức insert(value): chèn thêm phần tử vào tập hợp
  • Phương thức contains(value): kiểm tra xem có phần tử với giá trị value hay không
  • Phương thức removeAll(): xóa toàn bộ các phần tử trong tập hợp
  • Phương thức remove(value): xóa phần tử với giá trị value, trả về giá trị bị xóa, hoặc nil nếu phần tử đó không có.

Duyệt qua các phần tử trong tập hợp khá giống trong mảng:

//duyệt qua từng phần tử tập hợp
for n in products {
    print(n)
}

//Sắp xếp và duyệt qua từng phần tử
for n in products.sorted() {
    print(n)
}

Phép toán trên tập hợp

Giống như ngôn ngữ lập trình khác, giống toán tập hợp trong Swift có các phép toán: phép hợp, phép giao, phép hiệu, phép lấy phần bù

Giả sử hai tập hợp a và tập hợp b thì:

  • a.intersection(b) là phép giao tập a với tập b - kết quả là tập mới gồm các phần tử có cả trong a và b
  • a.union(b) là phép hợp, trả về tập mới gồm tất cả phần tử có trong a và b
  • a.subtracting(b) phép hiệu (trừ) tập hợp a - b. Trả về tập mới, bằng cách loại bỏ khỏi tập a những phần tử có trong tập b
  • a.symmetricDifference(b) - phép lấy phần bù hai tập hợp - trả về tập hợp mới bằng cách chỉ giữ lại những phần tử có duy nhất trong a hoặc trong b.
  • a==b trả về true nếu hai tập hợp giống nhau.
  • a.isSubset(of: b) - trả về true nếu a là tập con của b
  • a.isSuperset(of: b) - trả về true nếu a chứa tập b
  • a.isDisjoint(with: b) - kiểm tra xem hai tập hợp có phần tử chung nào không
set phep toan
Đăng ký theo dõi ủng hộ kênh