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ặcnil
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à ba.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à ba.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 ba.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 ba.isSuperset(of: b)
- trả về true nếu a chứa tập ba.isDisjoint(with: b)
- kiểm tra xem hai tập hợp có phần tử chung nào không