Les ensembles, également connus sous le nom de 'sets' en Swift, sont des structures de données qui permettent de stocker des éléments uniques dans un ordre non défini. Ils sont similaires aux tableaux, mais ils ne peuvent pas contenir de valeurs dupliquées. Les ensembles sont très utiles lorsque vous voulez vérifier rapidement si un élément existe déjà dans une collection, ou pour supprimer les doublons d'un tableau.
Création et initialisation d'un ensemble
Le type d'un ensemble Swift s'écrit ainsi : Set<Element>, où Element est le type que l'ensemble est autorisé à stocker. Contrairement aux tableaux, les ensembles n'ont pas de forme abrégée équivalente.
var letters = Set<Character>()
// On indique le <type> de l'ensemble : Set<String>
letters.insert("a")
// L'ensemble contient l'élément "a"
letters = []
// L'ensemble est redevenu vide
Les éléments d'un ensemble doivent tous être du même type.
Création d'un ensemble avec valeur
La variable favoriteGenres est déclarée comme "un ensemble de valeurs String", écrit sous la forme Set<String>. Il est uniquement autorisé à stocker des valeurs String.
var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]
// favoriteGenres a été initialisée avec 3 éléments
Un type d'ensemble ne peut pas être déduit d'un littéral de tableau seul, le type Set doit donc être explicitement déclaré. Vous n'avez pas besoin d'écrire le type des éléments de l'ensemble si vous l'initialisez avec un littéral de tableau qui contient des valeurs d'un seul type.
var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"]
// Plus rapide, le type est déduit automatiquement
Lecture et modifications des valeurs d'un ensemble
Compter le nombre d'élément d'un ensemble
favoriteGenres.count
// L'ensemble favoriteGenres.count possède 3 elements
L'ensemble est-il vide ?
if favoriteGenres.isEmpty {
print("L'ensemble est vide")
} else {
print("L'ensemble contient au moins un élément")
}
// Cela va afficher : "L'ensemble contient au moins un élément"
Ajouter un élément à un ensemble
favoriteGenres.insert("Jazz")
// Insert l'élément "Jazz" à la fin de l'ensemble
// ["Rock", "Classical", "Hip hop", "Jazz"]
Supprimer l'élément d'un ensemble
favoriteGenres.remove("Rock")
// Supprime l'élément "Rock"
// ["Classical", "Hip hop", "Jazz"]
Vérifier la présence d'un élément dans un ensemble
if favoriteGenres.contains("Funk") {
print("Nous avons du Funk")
} else {
print("Nous n'avons pas cela en stock")
}
// Cela va afficher : "Nous n'avons pas cela en stock"
Itération d'un ensemble
for genre in favoriteGenres {
print("\(genre)")
}
// Classical
// Hip hop
// Jazz
Pour parcourir les valeurs d'un ensemble dans un ordre spécifique, utilisez la méthode sorted().
for genre in favoriteGenres.sorted() { // ... }
Opération sur les ensembles
Vous pouvez effectuer des opérations sur un ensemble, telles que combiner deux ensembles ensemble, déterminer quelles valeurs deux ensembles ont en commun ou déterminer si deux ensembles contiennent toutes, certaines ou aucune des mêmes valeurs.

- Utilisez la méthode intersection(_:) pour créer un nouvel ensemble avec uniquement les valeurs communes aux deux ensembles.
- Utilisez la méthode symmetricDifference(_:) pour créer un nouvel ensemble avec des valeurs dans l'un ou l'autre ensemble, mais pas dans les deux.
- Utilisez la méthode union(_:) pour créer un nouvel ensemble avec toutes les valeurs des deux ensembles.
- Utilisez la méthode subtracting(_:) pour créer un nouvel ensemble avec des valeurs ne faisant pas partie de l'ensemble spécifié.
let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigits: Set = [2, 3, 5, 7]
// Nouvel ensemble avec toutes les valeurs des deux ensembles
oddDigits.union(evenDigits).sorted()
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
// Nouvel ensemble avec uniquement les valeurs communes aux deux ensembles
oddDigits.intersection(evenDigits).sorted()
// Ensemble vide : []
// Nouvel ensemble avec des valeurs ne faisant pas partie de l'ensemble spécifié
oddDigits.subtracting(singleDigits).sorted()
// [1, 9]
// Nouvel ensemble avec des valeurs dans l'un ou l'autre ensemble, mais pas dans les deux
oddDigits.symmetricDifference(singleDigits).sorted()
// [1, 2, 9]
Appartenance et égalité

- Utilisez l'opérateur "est égal" == pour déterminer si deux ensembles contiennent toutes les mêmes valeurs.
- Utilisez la méthode isSubset(of:) pour déterminer si toutes les valeurs d'un ensemble sont contenues dans l'ensemble spécifié.
- Utilisez la méthode isSuperset(of:) pour déterminer si un ensemble contient toutes les valeurs d'un ensemble spécifié.
- Utilisez les méthodes isStrictSubset(of:) ou isStrictSuperset(of:) pour déterminer si un ensemble est un sous-ensemble ou un sur-ensemble, mais pas égal à, un ensemble spécifié.
- Utilisez la méthode isDisjoint(with:) pour déterminer si deux ensembles n'ont pas de valeurs en commun.
let houseAnimals: Set = ["Chien", "Chat"]
let farmAnimals: Set = ["Mouton", "Coq", "Vache", "Chien", "Chat"]
let cityAnimals: Set = ["Pingouin", "Souris"]
// Les valeurs d'un ensemble sont contenues dans l'ensemble spécifié ?
houseAnimals.isSubset(of: farmAnimals)
// true
// Un ensemble contient toutes les valeurs d'un ensemble spécifié ?
farmAnimals.isSuperset(of: houseAnimals)
// true
// Deux ensembles n'ont pas de valeurs en commun ?
farmAnimals.isDisjoint(with: cityAnimals)
// true