Les Sets ou Ensembles en Swift
Créez et manipulez des collections de données uniques pour vos applications.
Les ensembles (Sets) en Swift sont des collections non ordonnées d'éléments uniques. Contrairement aux tableaux (Arrays), les ensembles ne garantissent pas l'ordre des éléments, mais ils sont optimisés pour vérifier l'unicité des éléments et effectuer des opérations telles que les intersections, les unions et les différences avec une efficacité accrue.
Déclaration et Initialisation d'un Set
Pour créer un ensemble en Swift, vous utilisez la syntaxe avec les accolades {} et spécifiez le type d'éléments que l'ensemble peut contenir. Les éléments dans un Set doivent être conformes au protocole Hashable pour assurer l'unicité (les types natifs comme String, Int, etc., le sont par défaut).
Exemple de déclaration d'un ensemble vide :
var emptySet = Set<Int>() // Un ensemble vide d'entiers
Exemple avec des valeurs initiales :
var fruits: Set<String> = ["Apple", "Banana", "Orange"]
Ou bien avec inférence de type :
var colors: Set = ["Red", "Green", "Blue"]
Caractéristiques des Sets
- Non ordonné : Contrairement aux tableaux, l'ordre des éléments dans un Set n'est pas garanti.
- Uniqueness : Chaque élément d'un ensemble est unique. Si vous essayez d'ajouter un élément déjà présent, il ne sera pas ajouté à nouveau.
Ajouter et Supprimer des Éléments
Ajouter un élément à un Set :
Vous pouvez ajouter des éléments à un ensemble en utilisant la méthode insert.
fruits.insert("Grapes") // Ajoute "Grapes" à l'ensemble
Supprimer un élément :
Vous pouvez supprimer un élément à l'aide de la méthode remove.
fruits.remove("Banana") // Supprime "Banana" de l'ensemble
Supprimer tous les éléments :
fruits.removeAll() // Vide l'ensemble
Vérification de l'Existence d'un Élément
Pour vérifier si un élément existe dans un ensemble, vous pouvez utiliser la méthode contains.
if fruits.contains("Apple") {
print("Apple est dans l'ensemble")
}
Accéder aux Éléments d'un Set
Étant donné que les ensembles ne sont pas ordonnés, vous ne pouvez pas accéder à un élément en utilisant un indice comme dans un tableau. Cependant, vous pouvez parcourir un ensemble avec une boucle for-in.
for fruit in fruits {
print(fruit)
}
Opérations sur les Sets
Les ensembles en Swift offrent des opérations mathématiques comme les unions, intersections, différences et différences symétriques.
Union : Combine tous les éléments de deux ensembles.
let setA: Set = [1, 2, 3]
let setB: Set = [3, 4, 5]
let unionSet = setA.union(setB)
print(unionSet) // Affiche : [1, 2, 3, 4, 5]
Intersection : Renvoie les éléments communs entre deux ensembles.
let intersectionSet = setA.intersection(setB)
print(intersectionSet) // Affiche : [3]
Différence : Renvoie les éléments présents dans un ensemble, mais pas dans l'autre.
let differenceSet = setA.subtracting(setB)
print(differenceSet) // Affiche : [1, 2]
Différence Symétrique : Renvoie les éléments qui ne sont pas communs entre deux ensembles.
let symmetricDifferenceSet = setA.symmetricDifference(setB)
print(symmetricDifferenceSet) // Affiche : [1, 2, 4, 5]
Propriétés et Méthodes Utiles
count : Retourne le nombre d'éléments dans l'ensemble.
print(fruits.count) // Affiche le nombre d'éléments
isEmpty : Vérifie si l'ensemble est vide.
if fruits.isEmpty {
print("L'ensemble est vide")
}
first : Accède à un élément aléatoire (car non ordonné) de l'ensemble.
if let firstFruit = fruits.first {
print(firstFruit) // Affiche un fruit
}
Comparer Deux Ensembles
Vous pouvez vérifier les relations entre deux ensembles, telles que l'égalité, l'inclusion ou le fait qu'un ensemble soit un sous-ensemble ou un sur-ensemble.
Égalité :
Deux ensembles sont égaux s'ils contiennent les mêmes éléments, indépendamment de l'ordre.
let setX: Set = [1, 2, 3]
let setY: Set = [3, 2, 1]
if setX == setY {
print("Les ensembles sont égaux")
}
Sous-ensemble :
Vérifie si un ensemble est un sous-ensemble d'un autre.
if setX.isSubset(of: setB) {
print("setX est un sous-ensemble de setB")
}
Sur-ensemble :
Vérifie si un ensemble est un sur-ensemble d'un autre.
if setB.isSuperset(of: setX) {
print("setB est un sur-ensemble de setX")
}
Disjoint :
Vérifie si deux ensembles n'ont aucun élément en commun.
if setA.isDisjoint(with: setB) {
print("Les ensembles n'ont aucun élément en commun")
}
Conversion entre Set et Array
Vous pouvez facilement convertir un Set en Array si vous avez besoin de travailler avec un ensemble ordonné, ou un Array en Set si vous avez besoin d'éliminer les doublons.
Convertir un Set en Array :
let fruitArray = Array(fruits)
Convertir un Array en Set :
let numberArray = [1, 2, 2, 3, 3, 4]
let numberSet = Set(numberArray) // Élimine les doublons