Operaciones entre sets en Swift

Resumen

Trabajar con sets en Swift te permite comparar grupos de datos sin preocuparte por duplicados ni por el orden. Aquí aprenderás cómo aplicar las cuatro operaciones principales entre conjuntos en Xcode usando un ejemplo de estudiantes inscritos en materias, ideal si estás comenzando con estructuras de datos en Swift.

¿Cómo se hace una unión entre dos sets en Swift?

La unión combina dos conjuntos y devuelve uno nuevo con todos los elementos, sin repetir los que aparecen en ambos. Es la operación más directa cuando quieres juntar información.

Imagina que tienes dos materias representadas como sets de strings. En Matemáticas están Juan, María, Andrea, John y Camilo. En Español están María, Andrea, John, Camilo, Rick y Andrés. Al ejecutar la unión, Swift te devuelve la lista completa sin duplicados.

swift let matematicas: Set<String> = ["Juan", "María", "Andrea", "John", "Camilo"] let español: Set<String> = ["María", "Andrea", "John", "Camilo", "Rick", "Andrés"]

let union = matematicas.union(español) print(union)

El resultado incluye a Juan, Camilo, Andrés, María, John, Rick y Andrea. Solo agrega al primer set aquellos elementos que le faltaban y que sí estaban en el segundo [0:55].

¿Qué hace el método union en Swift? Combina dos sets en uno solo, eliminando duplicados automáticamente. El resultado contiene todos los elementos únicos de ambos conjuntos.

¿Cómo encontrar los elementos comunes con intersection?

La intersección genera un nuevo set únicamente con los elementos que aparecen en ambos conjuntos. Es la operación clave cuando quieres saber qué se repite entre dos grupos.

Siguiendo con el ejemplo, si quieres saber qué estudiantes cursan tanto Matemáticas como Español, aplicas intersection:

swift let interseccion = matematicas.intersection(español) print(interseccion)

El resultado devuelve a John, Camilo, María y Andrea, los cuatro estudiantes que aparecen en ambas materias [1:38]. Esta operación es útil cuando trabajas con filtros, permisos compartidos o cualquier escenario donde necesitas detectar coincidencias.

¿Cuál es la diferencia entre subtracting y symmetricDifference?

Ambas operaciones eliminan elementos compartidos, pero lo hacen con lógicas distintas. Entender esa diferencia te ahorra errores cuando filtras datos.

¿Cómo restar elementos entre sets con subtracting?

La operación subtracting devuelve los elementos que están en el primer set pero no en el segundo. El orden importa porque define qué conjunto se toma como base.

swift let resta = matematicas.subtracting(español) print(resta)

let resta2 = español.subtracting(matematicas) print(resta2)

En el primer caso, el resultado es Juan, el único estudiante que está en Matemáticas pero no en Español [2:18]. En el segundo, al invertir el orden, obtienes a Andrés y Rick, que están en Español pero no en Matemáticas [2:39].

¿Qué hace symmetricDifference en un set?

La diferencia simétrica devuelve un nuevo set con los elementos que están en uno u otro conjunto, pero no en ambos. Es lo opuesto a la intersección.

swift let diff = matematicas.symmetricDifference(español) print(diff)

El resultado incluye a Rick, Juan y Andrés [3:14]. Es como unir los dos resultados de las restas anteriores en una sola operación.

¿Cuándo uso symmetricDifference en lugar de subtracting? Usa symmetricDifference cuando quieras los elementos exclusivos de ambos lados al mismo tiempo. Usa subtracting cuando solo te interesen los exclusivos de uno de los dos sets.

¿Para qué sirven las operaciones entre sets en proyectos reales?

Estas cuatro operaciones (unión, intersección, subtracting y symmetricDifference) cubren la mayoría de comparaciones entre colecciones únicas que vas a necesitar en Swift. Algunos casos donde brillan:

  • Detectar usuarios que pertenecen a dos grupos a la vez con intersection.
  • Fusionar listas de etiquetas o categorías sin duplicados con union.
  • Identificar diferencias entre dos versiones de datos con symmetricDifference.
  • Filtrar elementos exclusivos de un grupo con subtracting.

Piensa en un caso de uso propio donde aplicarías estas operaciones y compártelo en los comentarios. ¿Cómo las usarías en tu próximo proyecto?