Coffee Beans

Gestire gli insiemi in Swift con la struct Set

Swift offre 3 strutture dati fondamentali, è utile conoscerle perché rappresentano spesso i mattoni della soluzione al problema che state affrontando:

  1. Array
  2. Set
  3. Dictionary

Abbiamo filtrato/trasformato/ridotto la struct Array in vari post precedenti, concentriamoci ora su Set.

Questa struct è stata introdotta con la versione 1.2 di Swift. Un Set rappresenta un gruppo non ordinato di valori distinti. Può tornare utile quando:

  1. non abbiamo necessità di conservare un ordine tra gli elementi
  2. e non vogliamo elementi duplicati

Inoltre il Set è particolarmente utile per:

  1. le tipiche operazioni insiemistica (unione, esclusione, differenza, etc…)
  2. oppure per avere dei tempi di ricerca il più brevi possibile.

Costruire un Set

Un Set in Swift è una struct generic, ovvero al momento della dichiarazione/costruzione dobbiamo indicare il tipo di elemento che conterrà. Vediamo come costruire un Set di String.

Ora possiamo aggiungere a devices esclusivamente elementi di tipo String.

Possiamo utilizzare le seguenti computed property rispettivamente per verificare se l’insieme è vuoto e per contare il numero di elementi.

Ricordiamo che un Set non può contenere duplicati quindi se aggiungiamo nuovamente un elemento già presente

avremo sempre un insieme di 5 elementi

Precisamente i seguenti:

La sintassi speciale

E’ possibile dichiarare e inizializzare un Set con una sola riga usando la seguenti sintassi:

Grazie alla Type Inference Swift deduce che il tipo del Set sarà String.

Verificare se un elemento è presente

Il metodo contains riceve un elemento dello stesso tipo dell’insieme e ritorna un valore booleano, true se l’elemento è presente nel Setfalse nel caso contrario.

Rimuovere un elemento

Il metodo remove cerca ed estrae un elemento dal Set. Il tipo di ritorno di remove è un optional quindi è consigliabile utilizzarlo con il costrutto Optional Binding.

Prima di continuare rimettiamo l’iPod nel Set.

Ricordiamo che un Set non ha un ordine quindi con l’ultima operazione abbiamo riportato il Set esattamente allo stato precedente.

Operazioni insiemistiche

Creiamo ora un nuovo Set.

Ecco le 4 operazioni che possiamo eseguire su 2 insiemi dello stesso tipo.

Comparazione di insiemi

Per confrontare 2 insiemi dello stesso tipo abbiamo a disposizione questi 5 metodi:

  1. setA.isSubset(of: setB): true se setA è incluso in setB
  2. setA.isSuperset(of: setB): true se setA include setB
  3. setA.isStrictSubset(of: setB): true se setA è incluso in setB e i 2 insiemi sono diversi
  4. setA.isStrictSuperset(of: setB): true se setA include setB e i 2 insiemi sono diversi
  5. setA.isDisjoint(with: setB): true se i 2 insiemi non hanno elementi in comune

Infine possiamo confrontare se 2 insiemi sono uguali con l’operatore ==.

Se avete trovato utile il post non dimenticate di condividerlo con i pulsanti qui sotto!

Luca Angeletti

Trainer • Developer • Writer

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *