Sobes.tech
Junior

¿Cuál es la diferencia entre colecciones y arreglos?

sobes.tech AI

Respuesta de la IA

En Swift no existe un tipo separado de "colección". Existe el protocolo Collection, al cual corresponden varios tipos, incluyendo Array, Set y Dictionary.

Las principales diferencias entre Array y otros tipos que cumplen con el protocolo Collection:

  1. Orden de los elementos:

    • Array: Colección ordenada. Los elementos se almacenan en un orden definido y se accede a ellos por índice.
    • Set: Colección no ordenada de elementos únicos.
    • Dictionary: Colección no ordenada de pares "clave-valor".
  2. Acceso por índice:

    • Array: Permite acceso a los elementos mediante un índice entero.
    • Set: No soporta acceso directo por índice.
    • Dictionary: El acceso a los valores se realiza mediante la clave.
  3. Unicidad de los elementos:

    • Array: Puede contener elementos duplicados.
    • Set: Solo contiene elementos únicos.
    • Dictionary: Las claves deben ser únicas, los valores pueden repetirse.
  4. Rendimiento:

    • El acceso por índice en Array suele ser más rápido (O(1) en promedio).
    • La búsqueda de un elemento en Set o por clave en Dictionary suele ser más rápida (O(1) en promedio) en comparación con la búsqueda en Array (O(n)).

Ejemplo de uso de Array:

// Creación de un array de cadenas
var names: [String] = ["Alice", "Bob", "Charlie"]

// Acceso a un elemento por índice
let firstPerson = names[0] // "Alice"

// Añadir un elemento
names.append("David") // ["Alice", "Bob", "Charlie", "David"]

Ejemplo de uso de Set:

// Creación de un conjunto de números enteros
var uniqueNumbers: Set<Int> = [1, 2, 3, 3, 4] // {1, 2, 3, 4} - duplicado eliminado

// Comprobación de si contiene un elemento
let containsThree = uniqueNumbers.contains(3) // true

Ejemplo de uso de Dictionary:

// Creación de un diccionario "nombre - edad"
var ages: [String: Int] = ["Alice": 30, "Bob": 25]

// Acceso a un valor mediante la clave
let aliceAge = ages["Alice"] // 30

// Añadir una nueva pareja
ages["Charlie"] = 35 // ["Alice": 30, "Bob": 25, "Charlie": 35]