Sobes.tech
Junior

Qual è la differenza tra collezioni e array?

sobes.tech AI

Risposta dell'AI

In Swift non esiste un tipo separato chiamato "collezione". Esiste il protocollo Collection, a cui corrispondono vari tipi, tra cui Array, Set e Dictionary.

Le principali differenze tra Array e altri tipi conformi al protocollo Collection:

  1. Ordine degli elementi:

    • Array: Collezione ordinata. Gli elementi sono memorizzati in un ordine definito e accessibili tramite indice.
    • Set: Collezione non ordinata di elementi unici.
    • Dictionary: Collezione non ordinata di coppie "chiave-valore".
  2. Accesso tramite indice:

    • Array: Supporta l'accesso agli elementi tramite un indice intero.
    • Set: Non supporta l'accesso diretto tramite indice.
    • Dictionary: L'accesso ai valori avviene tramite la chiave.
  3. Unicità degli elementi:

    • Array: Può contenere elementi duplicati.
    • Set: Contiene solo elementi unici.
    • Dictionary: Le chiavi devono essere uniche, i valori possono ripetersi.
  4. Performance:

    • L'accesso tramite indice in Array è generalmente più veloce (O(1) in media).
    • La ricerca di un elemento in Set o tramite chiave in Dictionary è generalmente più veloce (O(1) in media) rispetto alla ricerca in Array (O(n)).

Esempio di utilizzo di Array:

// Creazione di un array di stringhe
var names: [String] = ["Alice", "Bob", "Charlie"]

// Accesso a un elemento tramite indice
let firstPerson = names[0] // "Alice"

// Aggiunta di un elemento
names.append("David") // ["Alice", "Bob", "Charlie", "David"]

Esempio di utilizzo di Set:

// Creazione di un insieme di numeri interi
var uniqueNumbers: Set<Int> = [1, 2, 3, 3, 4] // {1, 2, 3, 4} - duplicato rimosso

// Verifica se contiene un elemento
let containsThree = uniqueNumbers.contains(3) // true

Esempio di utilizzo di Dictionary:

// Creazione di un dizionario "nome - età"
var ages: [String: Int] = ["Alice": 30, "Bob": 25]

// Accesso a un valore tramite la chiave
let aliceAge = ages["Alice"] // 30

// Aggiunta di una nuova coppia
ages["Charlie"] = 35 // ["Alice": 30, "Bob": 25, "Charlie": 35]