Swift-9-

Type Collection: Set
Retour vers : Type Dictionary
Introduction

Dans la version 1.0 de Swift, on ne disposait que des structures de données, appelées aussi collection ou type, que de Array et Dictionary. Dans la version 1.2 une nouvelle structure de donnée Set qui supporte les opérations sur les ensembles. Le type Set est une structure très similaire au type Array. Alors le type Array est une structure ordonnée (ordered) qui peut contenir des elements de même valeur, le type Set est une structure non ordonnée (unordered) ou chaque élément est unique.

Il est important de bien comprendre le sens de termes « ordered » et « unordered » utilisé pour caractériser les collections en Swift. Ces termes ne s’appliquent pas à la façon dont la valeurs des éléments sont ordonnés ou triés suivant une relation d’ordre. Ils se référent à la façon dont les positions mémoire sont organisées. Les positions en mémoire d’un Array sont ordonnées suivant la valeur d’un index variant de 0 à n. Un Dictionary est une collection non ordonnée d’éléments accessibles par une clé, par conséquent l’ordre de lecture peut être différent de l’ordre d’écriture lors de la création.

Quelques opération sur la structure Set
  • Initialisation d’un ensemble vide d’entier : Set<Int>()
  • Initialisation d’un ensemble « mutable » depuis un Array: var noms = Set([« Paul, »Steve », »John »]
  • Existence d’un élément (valeur booléenne): noms.contains(« Steve »)
  • Insertion d’un élément : noms.insert(« Bill »)
  • Suppression d’un élément : noms.remove(« Bill »)
  • Suppression de tous les éléments: noms.removeAll()
  • Comptage du nombre d’éléments: noms.count
  • Test si l’ensemble est vide: noms.isEmpty
Déclaration & Initialisation

De la même manière que pour un type Array ou Dictionary, on déclare un type Set avec le mot clé var quant ile est modifiable (mutable) et let quand on ne peut changer ses données ( immutable)

let ensemble = Set<Int>()       // Création d'un enesemble vide de type Int 
var unEnsemble = Set<String>()  // Creation d'un ensemble vide de type String
let ensembleDeLettre: Set = ["A", "B", "C", "D"]  
var ensembleDeMots = Set(["Salade", "Pomme de terre", "Poire"])
let ensembleDeTaille10 = Set<Int>(minimumCapacity: 10) // Maximun 10 éléments
let troisNombres = Set([1,2,3])   // initialisation avec une Array
let pairs = Set([1,3,5])
let impairs = Set([2,4,6])
let nombres = Set(pairs.union(impairs))   //voir opération sur ensemble
var zero = [Double](count: 3, repeatedValue: 0.0) // trois éléménts de valeur 0.0
Addition et Suppression d’éléments
var salade = Set(["laitue", "olive", "sauce"])
salade.remove("laitue")     //  il reste  "olive", "sauce"
salade.insert("cornichon")  //  nouvelle salade "cornichon", "olive", "sauce"}
salade.removeAll()          //  supression de tous les éléments
Taille d’un ensemble
var ensemble = Set<String>()
ensemble.insert("Un")
ensemble.insert("Deux")
ensemble.insert("Trois")
print("\(mySet.count) elements")
Test de l’existence d’un élément
var ensemble = Set<String>()
ensemble.insert("Un")
ensemble.insert("Deux")
ensemble.insert("Trois")
var présent = ensemble.contains("Trois") //la variable présent a la valeur true
Itération d’un Set
for element in ensemble {
    print(element)
}
Opérations sur un Set
union :  Creates a set with all unique vales from both sets
subtract:  Creates a set with values from the first set that are not in the second set:
intersect:  Creates a set with values that are common to both sets
exclusiveOr:  Creates a new set with values that are in either set but not in both sets.

var mySet1 = Set(["One", "Two", "Three", "abc"])
var mySet2 = Set(["abc","def","ghi", "One"])

//newSetUnion = {"ghi", "Two", "One", "Three", "abc", "def"}
var newSetUnion = mySet1.union(mySet2)

//newSetSubtract = {"Two", "Three"}
var newSetSubtract = mySet1.subtract(mySet2)

//netSetIntersect = {"One", "abc"}
var newSetIntersect = mySet1.intersect(mySet2)

//newSetExclusiveOr = {"Two", "Three", "def", "ghi"}
var newSetExclusiveOr = mySet1.exclusiveOr(mySet2)

 

dddd