Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Clase 05-03-24 - 4 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
vale, pues antes de
00:00:00
silencio
00:00:03
a ver, antes de
00:00:07
pasar a conjuntos
00:00:09
pues bueno
00:00:10
por completitud, no porque os perdáis
00:00:12
ni os volváis locos en esto, vos tampoco os volváis
00:00:15
locos con ninguna otra cosa, pero bueno
00:00:16
con esto menos
00:00:18
vamos a completar un poquito
00:00:19
de listas
00:00:22
para que no parezca que ni lo hemos mencionado
00:00:23
pero insisto, no quiero que
00:00:26
os volváis locos
00:00:28
A ver, cuando hemos visto la jerarquía de Collection, venga, ¿alguien me está haciendo caso?
00:00:30
que está pausado
00:00:46
como nuestros cerebros
00:00:51
que podemos esperar
00:00:53
yo creo que Miguel, como Miguel es el que se echa
00:00:59
las siestas, luego lo está súper despejado
00:01:03
llega a la una y media
00:01:05
pero se ha estado dos cabezadas
00:01:06
antes
00:01:09
bueno, llamémosle
00:01:09
me apago
00:01:13
Aunque estés dormido
00:01:17
Sí, sí, sí
00:01:19
Yo eso lo he visto en algunas series de estas de Netflix
00:01:21
Bueno, a ver, o parálisis del...
00:01:23
No, porque el que le dan arcolepsia no procesa
00:01:32
Hay otra cosa que se llama parálisis del sueño
00:01:35
Que él cree que procesa
00:01:36
Pero luego no sabe de lo que estamos hablando
00:01:39
Pero...
00:01:40
¿Qué?
00:01:42
No, parálisis del sueño
00:01:45
Es otra cosa
00:01:47
que en esa estás dormido
00:01:47
pero te estás enterando de lo que ocurre
00:01:51
no
00:01:53
está pasando algo por ahí
00:01:53
como que no, si yo me entero de lo que dice
00:01:56
bueno, la próxima vez que te da una cabezada
00:01:58
te voy a preguntar, a ver si es verdad
00:02:02
que te enteras de lo que dices
00:02:03
a ver
00:02:06
Pues que esto es tan grande
00:02:12
Que tela
00:02:23
Pues que
00:02:42
Bueno, y encima se
00:02:43
Se me cuelga el ordenador
00:02:48
Ah, aquí, vale, vale
00:02:52
Vale, esta me vale, por ejemplo
00:02:54
Vale
00:03:01
A ver, venga
00:03:13
Bueno, venga
00:03:14
a ver, cuando veíamos la jerarquía
00:03:33
de colección
00:03:37
recordad que
00:03:38
para manejar volúmenes de datos
00:03:41
pues como el array es un poquito engorroso de manejar
00:03:43
alguien decidió ponerse a hacer clases
00:03:47
basadas en lo que hay
00:03:50
que es que son objetos y arrays, no hay más
00:03:52
alguien decidió hacer clases para permitirnos de forma sencilla
00:03:54
guardar un montón de cosas bajo una misma referencia
00:03:58
y todo ese mogollón de clases lo organizó en una jerarquía
00:04:01
para que fuera más o menos organizado
00:04:04
entonces, para eso estaba la interfaz iterable
00:04:07
que lo único que dice es el que implemente iterable
00:04:11
tiene que ofrecer métodos para poder
00:04:13
ser iterado, vale
00:04:15
luego collection
00:04:17
que a su vez implemente iterable, el que implemente
00:04:18
collection tiene que
00:04:21
ofrecer métodos para poder hacer add
00:04:23
remove
00:04:25
etcétera, entonces
00:04:27
el que implemente collection tiene que implementar
00:04:29
lo de add, remove y además lo de iterar
00:04:31
vale, entonces a partir de aquí
00:04:33
ya se dijo, venga, dos filosofías de trabajo
00:04:35
las listas
00:04:37
en las cuales la posición no nos importa
00:04:39
y los conjuntos
00:04:41
en los cuales la posición no nos importa.
00:04:43
Con lo cual,
00:04:46
al no registrar
00:04:47
la posición, no podemos meter dos
00:04:49
elementos iguales, porque no se podrían distinguir.
00:04:51
Estarían navegando los dos en el conjunto.
00:04:54
Vale, list y set.
00:04:56
Una vez separadas las dos filosofías,
00:04:57
list, como,
00:05:00
venga, pues la voy a hacer con un array y la voy a hacer con
00:05:01
lista enlazada. Pues, hala.
00:05:03
Ya dos implementaciones concretas.
00:05:05
ArrayList y LinkedList
00:05:07
¿Vale? Y estas son dos
00:05:09
Muy antiguas, que eran las originales
00:05:11
Cuando no había ni tipo de marametrizados
00:05:13
Ni nada, las primeras clases
00:05:15
Que se hicieron para guardar
00:05:17
De golpe muchos datos, pero
00:05:19
Se mantienen de alguna manera
00:05:21
Por compatibilidad
00:05:23
Son código legado, de eso que se llama
00:05:25
Código
00:05:28
Cuando pone Legacy Code
00:05:29
Código legado, significa, bueno, lo seguimos teniendo
00:05:31
Pues porque nos da pena echarlo
00:05:34
No vaya a ser que haya alguien que no haya querido migrar sus aplicaciones.
00:05:36
Pues esas dos forman parte de eso.
00:05:40
Y luego, de la filosofía de conjuntos, pues hay estas tres implementaciones.
00:05:44
Esta, esta y esta.
00:05:51
Que son un poquito las que veremos cómo se usan.
00:05:53
Y luego están estas cosas de Q, en las que aparece la palabra Q por ahí,
00:05:55
que es la interfaz Q, que como bien sabéis es cola,
00:06:01
que tiene una implementación
00:06:03
que es cola con prioridad, que es esta
00:06:05
y luego
00:06:07
a su vez está esta
00:06:09
interfaz que se implementa
00:06:11
o con linked list o con array
00:06:13
o con array de aquí, con estas
00:06:15
entonces, ¿qué es eso? eso es una tontería
00:06:17
eso es una chorrada, bueno, no merece la pena
00:06:19
perderse mucho en ello, pero a ver
00:06:21
que nos suene y que sepamos de qué es
00:06:23
en algún momento cuando empezamos lo de colecciones
00:06:24
y listas dijimos que
00:06:27
hay estructuras
00:06:28
conceptos que se han manejado siempre para guardar
00:06:31
datos, uno por ejemplo
00:06:33
es el de la pila
00:06:35
y otro es el de la cola
00:06:36
entonces una pila, en cualquier
00:06:38
contexto informático ya sabéis lo que es
00:06:41
una pila es un almacén de datos, eso es una pila
00:06:43
un almacén de datos, pero
00:06:45
un almacén de datos
00:06:47
en el cual lo único que se puede hacer es
00:06:48
depositar
00:06:51
en la última posición, en la
00:06:53
cima, con lo cual solo
00:06:55
hay una sentencia que se puede hacer con la pila
00:06:57
que es PUS, la que se llama PUS
00:06:59
normalmente, PUS, que es apilar
00:07:00
push, ahí no hay recuperar
00:07:03
por posición con get y como aquí
00:07:05
en un linked list, tú recuperas la 7
00:07:07
la 2, la 5, en una lista
00:07:09
enlazada genérica, en una pila
00:07:11
solo
00:07:12
recuperas la última
00:07:14
que apilaste, entonces solamente habría
00:07:16
dos métodos en una pila, el que
00:07:19
se llama de toda la vida push
00:07:21
que es, meten la pila, o lo que es lo mismo
00:07:22
apila arriba, ponen la cima
00:07:25
y el pop
00:07:27
que significa, sácame de la pila
00:07:28
que solo puede sacarme el que está arriba
00:07:30
entonces push y pop son las dos acciones
00:07:32
que se hacen con una estructura tipo pila
00:07:34
push es ponme arriba
00:07:36
y pop es sácame el de arriba
00:07:38
y los que están abajo ahí se quedan
00:07:39
irán saliendo con los sucesivos pop
00:07:41
claro, eso no los va haciendo
00:07:44
con los sucesivos pop irán saliendo
00:07:45
es una estructura de informática de toda la vida
00:07:47
que
00:07:49
es a la que se adaptan
00:07:51
pues la gestión de procesos
00:07:54
de los sistemas operativos
00:07:56
según se van encolando los contadores de programa
00:07:57
Pues hay muchos conceptos informáticos que se manejan con estructuras de pila. Y en esas pilas hay dos acciones, push y pull. Y luego la cola es algo muy parecido. La cola es una fila, una filita, ¿vale? Una filita donde tú vas encolando y vas sacando del otro lado.
00:08:00
es un concepto en realidad
00:08:22
no es más que un concepto
00:08:24
pero responde a muchas situaciones reales
00:08:25
en informática y en cualquier tecnología
00:08:27
en cualquier disciplina tecnológica
00:08:30
responde a una situación muy habitual
00:08:32
tú vas encolando y vas sacando
00:08:33
bueno pues
00:08:36
las acciones que se hacen
00:08:38
sobre las pilas y las colas
00:08:40
este push, este pop que digo
00:08:42
para que aparezcan
00:08:43
de alguna manera reflejadas
00:08:46
en la interfaz collection
00:08:48
para que aparezcan reflejadas
00:08:49
y que esto no las ignore, no ignore
00:08:51
estas estructuras, pues
00:08:52
implementan interfaces, se hacen
00:08:54
interfaces que tienen esos métodos
00:08:56
el push, el pop, el no sé qué
00:08:58
¿vale? Se hacen interfaces que los tienen
00:09:00
y linked list
00:09:02
la implementa, entonces si uno cotillea
00:09:04
dentro de linked list, si uno cotillea
00:09:06
como veis, array list
00:09:08
array list no
00:09:12
implementa esto, pero linked list
00:09:13
sí, ¿por qué se ha elegido
00:09:16
así? Porque recordad
00:09:19
que array list es muy bueno
00:09:20
para consultar, pero
00:09:22
fatal para meter y sacar.
00:09:24
Entonces, no tiene sentido simular
00:09:27
una pila con un array, porque es una locura.
00:09:28
Una pila, lo que tú estás haciendo es todo el rato
00:09:30
meter y sacar. Y no consultas jamás
00:09:32
en una pila. Una pila no consultas porque no puedes.
00:09:34
Entonces, no tendría ningún sentido
00:09:37
simular una pila con un array list. Es matar
00:09:38
moscas a cañonazos. Entonces,
00:09:40
una pila, una estructura de pila
00:09:42
o cola, se hace con un
00:09:44
linked list, con una lista enlazada, que es mucho más
00:09:46
eficiente para meter y sacar
00:09:48
al principio.
00:09:50
¿vale? por eso
00:09:50
esto implementa
00:09:52
esta de aquí, pero esta no, porque es que es una tontería
00:09:55
hacer esa cosa tan retorcida
00:09:57
bueno, pues entonces si cotilleamos
00:09:59
en las, en los métodos
00:10:01
de linked list, tiene algunos que no
00:10:03
tiene array list y que son
00:10:05
precisamente los relacionados con
00:10:07
los funcionamientos tipo pila y tipo cola
00:10:09
entonces, por ejemplo, en un
00:10:11
main cualquiera, yo me voy a
00:10:13
hacer un linked list
00:10:15
y un array list
00:10:17
Vale, entonces
00:10:19
Ya en la declaración
00:10:33
No he puesto list genérico
00:10:41
He puesto linked list y array list
00:10:43
Porque yo ahora lo que quiero es cotillear
00:10:45
Los métodos que me ofrece
00:10:47
Y si yo aquí pongo list
00:10:48
Ya sabéis que entonces el compilador
00:10:51
Solo me deja llamar a los métodos de list
00:10:53
A los de list
00:10:56
¿Vale? Es decir, yo solamente
00:10:57
Puedo llamar a los métodos
00:10:59
De la clase tal y como
00:11:02
Está declarada, no instanciada
00:11:03
¿Vale?
00:11:05
lo que pasa es que normalmente cuando uno hace una lista
00:11:07
sea enlazada, sea ArrayList
00:11:10
los métodos que quiere usar son los que
00:11:11
están en list, los que están ahí
00:11:13
no los específicos suyos
00:11:15
los que están ahí, ¿vale? por eso yo hasta ahora
00:11:17
por comodidad declaraba como
00:11:19
list y luego instanciaba como me daba la gana
00:11:21
pero es que ahora quiero acceder a los específicos
00:11:23
de LinkedList, a los específicos
00:11:26
de LinkedList
00:11:28
los específicos que implementan estos
00:11:29
que no están en list, no están
00:11:31
aquí, no están aquí
00:11:33
porque son métodos específicos
00:11:35
que implementan los de aquí
00:11:37
entonces si quiero cotillear
00:11:38
en los métodos específicos de linked list
00:11:41
que implementan los de aquí
00:11:43
no puedo declararlo como list
00:11:44
porque entonces solo veo los de aquí
00:11:46
¿vale? recordad cómo funciona la herencia
00:11:47
las interfaces, todo eso
00:11:50
bueno, pues por eso lo he declarado
00:11:52
como linked list
00:11:54
vale, pues si ahora
00:11:56
cotilleamos en
00:11:59
los métodos que me ofrecen
00:12:02
ambas clases, hay algunos
00:12:05
que son distintos. Lista
00:12:07
1, pues tiene los de list
00:12:12
por supuesto, añadir, añadir
00:12:14
todos, añadir muchos de golpe, añadir
00:12:16
una posición, añadir al principio,
00:12:18
tiene muchos,
00:12:20
pero es que además el index of que hemos usado,
00:12:22
el iterador para sacar iterador,
00:12:24
pero es que además tiene unos muy raros
00:12:26
que empiezan por P.
00:12:28
El pick, el pull, el push,
00:12:30
el pop, ¿vale?
00:12:32
Pues estos métodos
00:12:34
son métodos que en realidad hacen
00:12:35
lo mismo, el push
00:12:38
lo que está haciendo es lo mismo que añadir
00:12:39
al final el atlas, es lo mismo
00:12:42
pero han hecho otro igual que se llama push
00:12:43
solo por compatibilidad
00:12:45
porque push es el nombre habitual
00:12:47
con el que uno se refiere
00:12:49
a la acción de apilar en una pila
00:12:52
entonces
00:12:54
con este rollo lo que estoy diciendo es que
00:12:55
linked list te ofrece métodos con nombrecitos
00:12:57
que suenan
00:13:00
al funcionamiento de pilas
00:13:01
con su terminología habitual
00:13:04
por si uno quiere trabajar con algo como
00:13:05
si fuera una pila, pues porque
00:13:07
ya está, pues porque le gusta, porque anda
00:13:09
mira, esto que voy a trabajar
00:13:11
funciona como una pila, pues uso
00:13:13
una linked list y en lugar de añadir
00:13:15
hago push y hago pop y ya está, y queda
00:13:17
más bonito, estoy haciendo lo mismo que si hago add
00:13:19
vale, pero queda más bonito si lo llamo así
00:13:21
bueno, pues estos
00:13:23
métodos de aquí
00:13:25
que uno puede ver lo que hacen
00:13:26
pues te saca el elemento en la cabecera de la lista
00:13:29
o null si no sé qué
00:13:31
o pues lo mismo
00:13:33
te devuelve
00:13:34
este método es equivalente a
00:13:37
borrame el primero, pop es equivalente
00:13:40
a este, es el mismo, es otro con otro
00:13:42
nombre, pero como ese es el nombre
00:13:44
habitual de las pilas
00:13:46
pues te hacen otro con otro
00:13:48
nombre, el push
00:13:49
pues lo mismo, es el mismo que este
00:13:51
el push es igual que este
00:13:53
lo que pasa es que este
00:13:56
es la implementación de the queue
00:13:57
y at first es la implementación de list
00:13:59
están ahí doblados
00:14:01
pero bueno, esto es una jerarquía
00:14:04
de cosas, de métodos para que uno
00:14:06
pues tenga flexibilidad, para que sus aplicaciones
00:14:07
sean bonitas, elija lo que le guste
00:14:10
etcétera, vale
00:14:12
entonces si miramos en lista 2
00:14:13
que es ArrayList, esos
00:14:15
métodos no van a estar
00:14:17
esos métodos los buscamos, los que empiezan por
00:14:19
P y no están
00:14:25
no están, porque ArrayList
00:14:26
no implementa de queue, luego
00:14:29
no tiene esos métodos
00:14:31
no los tiene, podría
00:14:32
implementar de queue y podríamos simular una
00:14:35
pila y una cola con un ArrayList, pero
00:14:37
que poco eficiente, estaríamos rompiendo el array
00:14:39
creándolo cada dos por tres
00:14:42
pues no, implementamos de queue con linked list
00:14:44
y ya está, veis
00:14:46
esta tiene los de list
00:14:47
array list tiene los de list
00:14:48
y ya está, porque no los de list
00:14:51
y yo creo que no implementa ninguna otra
00:14:53
no, array list tiene los de list
00:14:55
ya está, no implementa nadie más
00:14:58
sin embargo, linked list
00:15:00
tiene los de list
00:15:01
y tiene los de de queue, tiene los dos
00:15:03
estos y estos, porque implementa
00:15:05
las dos, recordad que una clase
00:15:07
puede implementar muchas interfaces diferentes
00:15:10
pues LinkedList implementa esta
00:15:11
y esta, luego tiene más métodos
00:15:13
que en realidad
00:15:15
hacen lo mismo, pero tienen nombres distintos
00:15:17
para simular esos funcionamientos
00:15:19
¿vale?
00:15:21
y luego hay una clase interesante
00:15:23
que tampoco nos vamos a meter en ella
00:15:25
que es esta
00:15:27
que es una lista en realidad
00:15:29
una lista para
00:15:31
encolar cosas y desencolarlas
00:15:33
una lista, llamemos encolar
00:15:35
y desencolar, a meter y sacar. Es que es lo mismo.
00:15:37
Lo único es que te incorpora un mecanismo
00:15:40
para establecer
00:15:41
prioridad entre los elementos. Tú puedes establecer
00:15:43
prioridad y cuando tú encolas, en función
00:15:45
de la prioridad, él se cuela o no se cuela.
00:15:47
Entonces, te incorpora un
00:15:50
pequeño mecanismo para que tú establezcas
00:15:51
encólame, pero este tiene prioridad tal.
00:15:53
Pues se cuela a los demás. Puedes hacer
00:15:55
una jerarquía por prioridades.
00:15:57
Bueno, pues que sepáis que
00:16:00
existe, por si uno
00:16:01
resulta que tiene una aplicación
00:16:03
en la cual el concepto de prioridad
00:16:05
en los objetos, por alguna razón
00:16:07
importa, entonces dice
00:16:09
ah, pues que bonito, lo simulo
00:16:11
con Priority View, que no hace
00:16:13
falta, uno podría simular su prioridad y
00:16:15
programarla a su manera, pero bueno
00:16:17
hay una clase que te permite
00:16:19
encolar y desencolar
00:16:21
con prioridad, si tú fijas
00:16:23
una prioridad, pues si tienes una aplicación que es
00:16:25
justo eso lo que quieres hacer
00:16:27
venga, vamos a jugar a usar esta clase
00:16:28
en lugar de programarlo yo entero, lo que sea
00:16:31
vale
00:16:33
bueno
00:16:35
pues esta es más o menos la jerarquía
00:16:39
que esto si lo veis
00:16:41
pues ya os tiene que decir algo
00:16:43
y no tiene que asustaros
00:16:44
ni volveros locos
00:16:47
esta es la jerarquía
00:16:48
esto de queue es saber lo que es
00:16:50
y ya está
00:16:52
y ArrayList, LinkedList sabemos usarlo
00:16:55
y VectorStack era
00:16:57
la primera versión de pila que se hizo
00:16:58
hace siglos mil
00:17:01
antes de que se organizara ya por
00:17:03
implementaciones, ya no, vamos a hacer una implementación
00:17:06
queue, luego una de queue
00:17:08
linked list que implemente de queue, antes de
00:17:10
reorganizarlo todo, pues stack
00:17:12
era una clase para simular una pila
00:17:14
ya está, punto pelota
00:17:16
y vector era una clase
00:17:17
para simular una colección de datos
00:17:19
y ahí estaban
00:17:21
y se acabó
00:17:24
bueno y de aquí
00:17:27
pues tenemos
00:17:28
esto ahora, verdad
00:17:30
Tenemos ahora este marroncito
00:17:31
De conjuntos
00:17:33
Por aquí, para acabar con colección
00:17:35
Pues venga
00:17:37
Vamos a ello
00:17:41
Vale, a ver
00:17:48
Bueno, pues a ver, entonces
00:17:55
Los conjuntos son
00:18:07
Otra filosofía
00:18:10
Para guardar datos todos a mogollón
00:18:11
En este caso
00:18:14
No se van a guardar
00:18:16
En una posición concreta
00:18:18
Eso es lo que lo distingue de las listas
00:18:20
y ya está, que no se van a guardar en una posición
00:18:22
luego no existe
00:18:24
el get por posición, no existe
00:18:26
los datos están todos ahí
00:18:28
pero no tienen posición, luego la implicación
00:18:30
es que no
00:18:32
puedo guardar yo dos objetos cuyo
00:18:33
equals me dé true, no puedo
00:18:36
guardar dos objetos cuyo equals me dé true
00:18:38
porque entonces
00:18:40
para la clase colección serían
00:18:41
indistinguibles, serían completamente
00:18:44
indistinguibles, porque dos objetos
00:18:46
son distinguibles por el equals
00:18:47
¿vale?
00:18:49
entonces, yo no puedo meter
00:18:50
en un set dos conjuntos
00:18:53
cuyo equals de
00:18:55
true
00:18:56
a ver, si yo tengo dos objetos
00:18:58
alumno con mismo nif y nombre
00:19:01
dos objetos alumno con mismo nif y nombre
00:19:03
pero claro, yo no he
00:19:05
implementado equals, entonces
00:19:07
tira del equals de object
00:19:09
y el equals de object, ya sabéis que
00:19:11
significa, dos objetos son iguales
00:19:13
solo si son exactamente
00:19:15
uno encima de otro, es decir
00:19:17
responde a la misma dirección
00:19:19
entonces en ese caso, claro que puedo meterlos en un set
00:19:20
porque es que el equals da false
00:19:22
¿vale?
00:19:24
luego el criterio para ver si el set admite
00:19:26
dos objetos
00:19:29
es que su equals dé false
00:19:30
sea cual sea el equals
00:19:32
que tengan ellos, el heredado de
00:19:33
object, el suyo propio, etc.
00:19:36
¿vale?
00:19:39
bueno, por ejemplo, aquí
00:19:41
para ver un poquito
00:19:42
así, para introducirlo
00:19:43
y ya nos vamos
00:19:46
Esta es la interfaz
00:19:47
De nuevo es parametrizada
00:19:49
Estáis pensando que lo vayamos ya
00:19:51
Pero es que son las 2 y 6
00:19:54
Y a mí me pagan por esto
00:19:55
Es que entonces
00:19:56
Vale, pues entonces
00:19:58
De nuevo es parametrizada
00:20:01
Entonces yo debería decir
00:20:03
Oye, en este set mete objetos
00:20:05
Es que aparte, si os pongo a hacer ejercicio
00:20:08
Os pilláis todos, con lo cual yo de 2 a 2 y media
00:20:09
Lo tengo que reservar para dar clase
00:20:11
Así que
00:20:13
Vale, pues entonces
00:20:15
vamos a hacer un set de string
00:20:18
para ver esto
00:20:26
no, en un main diferente
00:20:27
porque tengo todo lo de arriba
00:20:32
ok, me voy a hacer aquí
00:20:34
otra clase main
00:20:42
vale, pues me voy a hacer un set
00:20:43
de cadenas, si me hago un set
00:20:59
de objetos cadena
00:21:01
pues lo debería parametrizar y decir string
00:21:02
vale, venga, esto van a ser
00:21:05
nombres, que implementación
00:21:07
elijo, hay tres
00:21:11
ya el viernes
00:21:12
veremos
00:21:15
en qué se diferencian
00:21:17
y qué matices hay de usar una
00:21:18
o usar la otra.
00:21:21
Pero lo que está claro es que las tres son
00:21:23
implementaciones de un conjunto.
00:21:24
Luego las tres valen para guardar cosas ahí
00:21:26
sin posición, con lo cual
00:21:29
no se admiten duplicados.
00:21:31
Sea cual sea la que yo elija.
00:21:33
Vamos a elegir la más eficiente.
00:21:35
Bueno, eficiente.
00:21:38
El haset.
00:21:40
Ya explicaremos el viernes el haset
00:21:41
cómo está hecho por dentro, que lo programamos nosotros
00:21:42
porque es una movida.
00:21:44
Esta es una implementación concreta de un conjunto.
00:21:47
Vale.
00:21:56
Vamos a meterle ahora nombres.
00:21:57
¿Cómo se inserta en un conjunto?
00:22:00
Exactamente igual que en cualquier otra colección.
00:22:04
Con el método add.
00:22:07
Exactamente igual.
00:22:09
Eso no cambia.
00:22:10
Insertar con el método add.
00:22:11
Pues nada.
00:22:13
Ya tenemos una cadena ahí.
00:22:14
Aquí para insertar no cambia.
00:22:20
vamos a meterle
00:22:22
a este conjunto
00:22:32
esta misma cadena otra vez
00:22:35
vale, muy bien, ahí
00:22:37
y ahora vamos a recorrer
00:22:41
la colección
00:22:43
vamos a recorrer esta colección
00:22:44
para ver que tiene
00:22:47
no podemos hacer esto
00:22:48
como hacíamos con la lista
00:22:51
si yo intento hacer esto
00:22:52
uy, perdón
00:23:00
nombres.size
00:23:04
si, eso no estabais tan dormidos
00:23:05
vale, si yo intento
00:23:10
hacer esto
00:23:12
nombres.get
00:23:13
y es que
00:23:15
me dice, ¿cómo que getty?
00:23:17
¿qué es eso de getty? este método no existe
00:23:20
ese método no existe
00:23:22
luego, no podemos recorrer una colección
00:23:23
un conjunto así
00:23:25
¿vale, Daniel?
00:23:26
todavía no he terminado de hablar
00:23:30
¿vale?
00:23:31
No puedo recorrerla así
00:23:33
Bueno, o iterador o for each
00:23:34
Si vamos a consultar, solo a consultar
00:23:37
El for each es lo más cómodo
00:23:39
Para cada cadena
00:23:41
C en nombres
00:23:43
Vamos a mostrar que es lo que tiene
00:23:47
¿Vale?
00:23:50
C
00:23:52
¿Vale? Esta es cada una de las cadenas
00:23:53
Hemos hecho un conjunto
00:23:55
Le hemos metido tres cadenas
00:23:57
Y vamos a mostrar lo que tiene
00:23:59
Vale, ejecutamos este main
00:24:00
Tramposa
00:24:02
Tramposa no
00:24:06
Irresponsable
00:24:09
Vale
00:24:12
Pues efectivamente
00:24:15
El tercer ola ha pasado de él
00:24:17
¿Vale?
00:24:19
El tercer ola ha pasado de él
00:24:22
Porque ya estaba
00:24:24
Entonces a ver, ojo porque el problema
00:24:25
Aquí no es de compilación
00:24:28
Sino que es de tiempo de ejecución
00:24:30
Entonces el compilador
00:24:31
le da lo mismo, tú lo que has hecho está bien
00:24:34
que es meter
00:24:36
una cadena en un conjunto
00:24:37
de cadenas, está bien
00:24:40
y el método ha hecho lo que tenía que hacer, que es decir
00:24:41
venga, hola, voy a recorrer la colección
00:24:43
¿hay alguno
00:24:46
que sea igual que hola? sí lo hay
00:24:47
bueno, lo meto, y ya está, y no lo ha metido
00:24:49
y no te dice nada
00:24:52
entonces cuidado
00:24:54
porque a veces uno se puede perder
00:24:55
y decir, ¿por qué no me está funcionando?
00:24:57
a ver, tienes un conjunto
00:24:59
tú puedes intentar meter algo
00:25:00
Y si no puede ser, no puede ser
00:25:03
Vais a sacar un cero muy gordo, ¿eh? ¿Lo sabéis?
00:25:04
Vale
00:25:10
Vale, pues esta es
00:25:11
La principal diferencia
00:25:15
Que no tiene get
00:25:17
Y que no podemos meter duplicados
00:25:18
Ahora lo que tenemos que ver
00:25:21
Es
00:25:25
Como está hecho por dentro y las implicaciones que tiene a la hora de usarlo
00:25:26
¿Vale? Venga, vamos a dejarlo aquí
00:25:30
Porque me estoy poniendo muy nerviosa
00:25:31
Lo de hablar sola
00:25:33
¡Gracias!
00:25:37
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 11
- Fecha:
- 6 de marzo de 2024 - 12:28
- Visibilidad:
- Público
- Centro:
- IES ROSA CHACEL
- Duración:
- 25′ 37″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 101.63 MBytes