No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Compra acceso a todo Platzi por 1 a帽o

Antes: $249

Currency
$209/a帽o

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscr铆bete

Termina en:

15D
17H
13M
33S

Conjuntos

18/33
Recursos

Aportes 36

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Al parecer cuando agregamos un objeto que ya estaba, no lo cuenta y simplemente lo ignora, indic谩ndolo como False.

SETS (Conjuntos)

  • No tienen orden
  • No tienen elementos duplicados

Es necesario agregar elementos comparables: si un objeto es igual o no es igual a otro.

Definici贸n de un conjunto vac铆o (en este caso, un conjunto de Characters):

var letters = Set<Character>()

Para agregar elementos se debe utilizar el m茅todo .insert():

letters.insert("a")
letters.insert("h")
letters.insert("b")

Definici贸n de un conjunto de Strings:

var favouriteGames: Set<String> = ["Final Fantasy", "WoW", "FarCry"]

Se puede utilizar el m茅todo .isEmpty para comprobar si el conjunto esta o no vac铆o:

if favouriteGames.isEmpty {
    print("No hay juegos favoritos")
}

Para eliminar un elemento se puede realizar de varias formas:

if let removedGame = favouriteGames.remove("FarCry") {
    print("He eliminado de la lista \(removedGame)")
}

O utilizando el m茅todo .contains():

if favouriteGames.contains("Metal Gear") {
    // eliminar u otra cosa
}

Si queremos ordenar un conjunto, se usa el m茅todo .sorted():

for vg in favouriteGames.sorted() {
    print(vg)
}

驴Qu茅 pasa si queremos agregar un elemento que ya existe en el conjunto?

Aprovechando el RETO:

var favMovies: Set<String> = [
    "Back to the Future",
    "Matrix",
    "Star Wars"
]
favMovies	// {"Matrix", "Star Wars", "Back to the Future"}
favMovies.count	//3
favMovies.insert("Matrix")	// (inserted false, memberAfterInsert "Matrix")

Aparece el mensaje:

(inserted false, memberAfterInsert "Matrix")
(inserted false, memberAfterInsert "Ciao")```

el metodo insert regresa una tupla de un booleano y del tipo que sea el conjunto, el booleano determina si se inserto o no, y el segundo elemento de la ultima es el mismo elemento que se intento insertar, si el elemento ya existe, no importa las veces que se trate de insertar, siempre regresara false

var favouriteMovies : Set<String> = ["Taxi Driver", "Pulp Fiction", "Django Unchained", "Joker", "The Dark Knight"]
favouriteMovies.insert("Joker")
favouriteMovies.insert("Joker")
let (inserted, member) = favouriteMovies.insert("Joker")
print(inserted, member)

RETO:

En mi caso al agregar un objeto repetido, en la parte derecha marca como 鈥渋nserted false鈥 y sigue con la linea de codigo鈥 Esto es al hacerlo con un favoriteMoviesAndSeries.insert("")

Simplemente ignora el objeto repetido.

var favoriteMoviesAndSeries : Set = ["Blade Runner 2049", "Black Mirror", "Mr. Robot", "Mr. Robot"]
favoriteMoviesAndSeries.insert("Mr. Robot")
favoriteMoviesAndSeries

favoriteMoviesAndSeries.insert("Sr. Robot")
favoriteMoviesAndSeries
 
var favoriteSerie : Set<String> = ["Elite","Los Serrano", "La que se avecina", "El internado", "El barco"]
if favoriteSerie.contains("La que se avecina"){
    
    if let removeSerie =  favoriteSerie.remove("La que se avecina"){
    print("Se elimino la Serie: \(removeSerie)")
}
    
}
for orden in favoriteSerie{
    print(orden)
}

)

Esto es lo que ocurre cuando intento insertar 2 veces la misma peli! Returna False 馃榿 ![](https://static.platzi.com/media/user_upload/Screenshot%202023-10-04%20at%2004.50.34-f042e6c5-a4bf-4804-ac24-524e21b0c472.jpg)

El orden en un conjunto o set en Swift no est谩 garantizado y puede variar en diferentes ejecuciones del programa. Esto se debe a que los conjuntos en Swift est谩n implementados como estructuras sin orden espec铆fico.

La raz贸n principal detr谩s de esto es la optimizaci贸n de rendimiento. Al no mantener un orden espec铆fico, Swift puede realizar operaciones de conjunto, como agregar, eliminar y buscar elementos, de manera m谩s eficiente.

En mi caso. Salta una alerta donde muestra 鈥渋nserted False鈥, dando explicaci贸n a que no se a帽ade al conjunto porque es un elemento duplicado.

//Reto
var favouriteSoda:Set<String> = []
favouriteSoda.insert("Coca Cola")
favouriteSoda.insert("Naranjada")
favouriteSoda.insert("Toronja")
favouriteSoda.count
favouriteSoda.sorted()
favouriteSoda.insert("Toronja")
var set: Set<Character> = ["A","B","C"]
set.insert("D")
// remover
set.remove("A")
var movies: Set <String> = ["El c贸digo enigma", "El naufrago", "Una mente brillante", "Fuga de Pretoria", "Matrix", "El Se帽or de los Anillos", "Shrek", "Megamente"]

func addMovie(movie: String) {
    let isInserted = movies.insert(movie)
    
    if isInserted.inserted {
        print("Se agreg贸 \(movie) a su colecci贸n de pel铆culas favoritas.\n")
    } else {
        print("No se gareg贸 la pel铆cula \(movie), por que ya existe.\n")
    }
}
// No se agrega por que el elemento ya exite
addMovie(movie: "Shrek")

// S铆 se agrega por que es case sensitive
addMovie(movie: "shrek")

for movie in movies.sorted() {
    print(movie)
}

馃憗锔 Ojo con las may煤sculas y min煤sculas

Los conjuntos ignoran los elementos repetidos, pero si no respetamos las may煤sculas y min煤sculas, el conjunto pensar谩 que es un elemento distinto y la agregara,

var favorieMovies : Set<String>()

favoriteMovies.insert("Rocky") // Agregado
favoriteMovies.insert("Rocky") // Ignorado, ya existe
favoriteMovies.insert("rocky") // Agregado

print(favoriteMovies) // ["rocky", "Rocky"]

Cuando el string ya esta agregado al array, no lo vuelve a agregar.

var numbers: Set<Int> = []

numbers.count
numbers.insert(1)

func insertOnSet(number: Int){
    let inserted = numbers.insert(number)
    if inserted.inserted {
        print("El numero se insert贸 correctamente")
    } else {
        print("El elemento ya existe el el set")
    }
}

insertOnSet(number: 1)

Reto:

var movieFavorite : Set<String> = ["card", "el rey leon", "pocahontas"]

movieFavorite.insert("pocahontas")

No permite agregar un mismo objeto!

Tambi茅n se pueden 鈥渁帽adir鈥 varios elementos a la vez

var juegosFavoritos : Set<String> = []

juegosFavoritos.isEmpty

juegosFavoritos.insert("2048")

juegosFavoritos.contains("2048")

var masJuegos = ["pok茅mon legends Arceus","Halo","Crash Team Racing"]

for juego in masJuegos{
    juegosFavoritos.insert(juego)
}
// Conjuntos (Sets)
// no pueden ser buscados por 铆ndice [] y sus elementos no se pueden repetir.


var conjuntoEnteros = Set<String>()
conjuntoEnteros.insert("A")

var juegosFavoritos : Set<String> = []

juegosFavoritos.isEmpty

juegosFavoritos.insert("2048")

juegosFavoritos.contains("2048")

esta clase esta espectacular 鉂わ笍

var favouriteMovies : Set <String> = ["Rapidos y Furiosos", "Alicia en el pais de las maravillas", "El diario de una pasion"]
favouriteMovies.count

favouriteGames.insert("El diario de una pasion")
favouriteMovies.count```

El resultado 馃槵:
Se muestra como falso y no es agregado

Ejercicio

var favoriteMovies : Set<String> = ["Avatar", "Un Novato en Apuros", "Interestelar"]
favoriteMovies.count

favoriteMovies.insert("Avatar")

Resultado de la consola:

(inserted false, memberAfterInsert "Avatar")
//reto
var favoriteSeries : Set<String> = ["The big bang theory", "Friends", "Gravity Falls"]
favoriteSeries.insert("The big bang theory")

response = (inserted false, memberAfterInsert "The big bang theory")

Lo pone como 鈥渇alse鈥 y no lo agrega

var deletedGame : String?
    
    favoriteGames.contains("Road Redemption") ? deletedGame = favoriteGames.remove("Road Redemption") : print("The game does not appear in the set")```

El m茅todo insert(), me devuelve una tupla con un valor false, indic谩ndome que la inserci贸n a sido denegada. Si cambio el dato por un valor que no se repita, me saldr铆a un true.

Da false al insertar uno repetido

Al intentar incluir un elemento repetido, nos devuelve false por lo que al realizar la cuenta nuevamente se mantiene en 4 elementos.

var favouritesMovies : Set<String> = ["Back to the Future", "Figth Club", "War Games", "Interview With The Vampire"]
favouritesMovies.count
favouritesMovies.insert("War Games")
favouritesMovies.count

for mov in favouritesMovies.sorted() {
    print(mov)
}

si existe un valor en el conjuto no se puede ingresar 2 o mas veces en dicho conjunto

Indica que elemento ya existe en el Set por lo tanto no lo agrega.

Solo se pueden crear conjuntos de objetos que sean ordenables, comparables e irrepetibles.

var peliculas1 : Set = ["Buscando a Nemo", "Iron Man", "Bichos", "Batman: returns", "Shrek", "La Sirenita", "Thor"]
    var peliculas2 : Set = ["Buscando a Nemo", "Cars", "Bichos", "Bob Esponja", "Shrek2", "La Sirenita", "Thor"]
    peliculas1.subtract(peliculas2)
    print(peliculas1)


Pense que saltaria un error al insertar un item repetido en el set, pero Swift lo ha ignorado solo se ve en la parte derecha del un mensaje que dice: inserted false