Saltar navegación

20260210 EjerColecciones_3_Comparator - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 10 de febrero de 2026 por Raquel G.

1 visualizaciones

Descargar la transcripción

Vale, pues hemos podido generar el listado alfabético gracias a que nos hemos metido en alumno y hemos implementado comparable. 00:00:00
Pero claro, porque somos los dueños y señores de la aplicación. 00:00:15
Nos hemos metido ahí, ¡ay, que me interesa un alumno comparable! Lo pongo ahí con el compare tú. 00:00:21
Pero a ver, eso no siempre es tan fácil. 00:00:27
En una situación real, las clases del modelo son intocables, son Dios, porque representan mi lógica de negocio, están perfectamente conectadas con las tablas de la base de datos, tienen ahí sus explicaciones, sus cosas, 00:00:30
y yo no puedo llegar de repente 00:00:56
y porque a una funcionalidad en concreto 00:00:57
le interese algo irme a las clases 00:00:59
del modelo y adaptarlas a mis necesidades 00:01:01
que no se puede 00:01:04
poner en clase 00:01:05
bueno, pues en una situación normal 00:01:06
yo no puedo ir a las clases del modelo y hacer lo que me da la gana 00:01:11
¿vale? 00:01:13
entonces esto que hemos hecho de implements comparable está muy bien 00:01:14
pero no siempre podemos hacerlo 00:01:17
¿vale? 00:01:19
aparte de que puede darse una situación, a lo mejor yo si puedo 00:01:20
implementar un comparable 00:01:23
pero quiero hacer diferentes listados 00:01:24
uno por orden alfabético 00:01:27
ahora quiero otro por nota 00:01:29
ahora quiero otro por no sé qué 00:01:31
¿qué hago? ¿me vengo alumno todo el rato 00:01:32
a cambiarlo? no tiene sentido que tenga que 00:01:35
cambiar la aplicación y volver a ejecutarla 00:01:37
cada vez que quiero hacer un listado distinto 00:01:39
irme a cambiar el código, es absurdo 00:01:41
luego tiene que haber 00:01:43
alguna alternativa 00:01:44
para hacer criterios 00:01:46
de ordenación que ponerla 00:01:49
en la propia clase, tiene que haber alguna alternativa 00:01:50
porque esta, repito, es poco 00:01:53
cooperativa. Primero, 00:01:55
recopilando porque 00:01:58
me fuerza a un único criterio 00:01:59
de donación, solo uno, el que hay aquí. 00:02:01
A veces queremos más criterios, 00:02:03
más posibilidades. 00:02:05
Y segundo, porque puede que yo no pueda 00:02:07
tocar esta clase, con lo cual no puedo hacer 00:02:09
esto ni puedo hacer nada. Luego algún plan B 00:02:11
tiene que haber. Pues sí que lo hay. 00:02:13
Es el comparator ese 00:02:15
que copiasteis así sin ningún 00:02:17
criterio de echar GPT. 00:02:18
Y sin saberlo lo estaréis copiando. 00:02:20
Bueno, pues 00:02:24
hay una clase, una interfaz 00:02:25
que es la interfaz que no se llama 00:02:28
comparable, se llama comparator, que es otra 00:02:29
que esa es para crear 00:02:32
criterios de ordenación entre 00:02:34
cualesquiera dos tipos 00:02:36
de clases, eso es independiente 00:02:37
de la, no se mete en una clase 00:02:40
es independiente, yo creo 00:02:42
ese criterio de ordenación y luego 00:02:43
se lo paso al sort y ya está 00:02:45
con lo cual la 00:02:47
entidad no tiene por qué tener el comparable 00:02:49
no tiene por qué tenerlo 00:02:51
porque ya le voy a pasar 00:02:53
yo en el sort 00:02:55
el propio criterio, entonces vamos a hacerlo 00:02:56
en lugar de borrando este método 00:02:59
vamos a hacer otro que sea 00:03:01
ordenar por 00:03:03
orden ascendente de nota 00:03:05
por ejemplo, pues nos vamos 00:03:07
a hacer un 00:03:11
alumnos 00:03:12
nota 00:03:19
por nota descendente, venga 00:03:20
el que tenga más nota el primero 00:03:23
bueno, pues aquí tengo yo este problema 00:03:25
que yo querría esto 00:03:33
Esto es lo que yo quiero hacer 00:03:34
Quiero ordenar 00:03:37
Quiero ordenar 00:03:41
Y devolver esa lista ordenada 00:03:42
Pero que ocurre 00:03:44
Que el sort 00:03:47
Si yo no le paso a Kina ya sabemos de donde va a tirar 00:03:49
El sort va a tirar de este 00:03:52
Y este ordena por nombre 00:03:53
Guardad eso 00:03:55
De verdad eh 00:03:58
Sois peores que los que están en el despacho de dirección 00:04:00
es que hombre, los de patrocinio son los de la ESO 00:04:04
bueno, pues 00:04:14
son los de la básica 00:04:17
entonces el comparable de aquí no nos vale 00:04:18
y no tiene sentido que digamos, oye cuando vayas a ordenar por nota 00:04:23
para, cambia la aplicación 00:04:27
y vuelve a ejecutar, pues vaya, tengo que meter los álbumes otra vez 00:04:30
que tontería, o sea no tiene ningún sentido, entonces tengo que poder tener 00:04:33
más flexibilidad a la hora de dar criterios de ordenación 00:04:36
bueno, pues efectivamente para eso está este parámetro 00:04:38
este parámetro sirve para dar yo 00:04:41
un criterio de ordenación 00:04:43
concreto que va 00:04:45
a sobrescribir, que va a 00:04:47
hacer que sort ignore 00:04:49
el que tenga alumnos si es que tiene alguno 00:04:50
si es que tiene alguno 00:04:53
¿vale? luego recopilando 00:04:54
si yo al sort no le paso nada 00:04:56
o le paso un objeto null 00:04:59
o no pasarle nada no puedo, hay que pasarle un objeto al sort 00:05:00
pues si le paso un objeto null 00:05:03
entonces sort se va 00:05:05
alumno 00:05:07
y busca el comparable. 00:05:08
Si está estupendo, ordena por ese 00:05:11
y si no está es cuando me da error de ejecución. 00:05:13
Vale. Pero si yo 00:05:15
le paso un criterio de comparación 00:05:17
específico, entonces 00:05:19
ya ordena según ese criterio. 00:05:21
Ignorando el comparable 00:05:24
de alumno, ignorándolo completamente. 00:05:25
De hecho, si no lo hay, 00:05:28
no pasa nada, porque es que ni lo va a mirar. 00:05:29
Ni lo va a mirar, ¿vale? Si yo le paso 00:05:31
uno específico. Bueno, pues 00:05:33
¿cómo le pasamos un criterio específico? 00:05:35
Para pasar un criterio específico necesitamos un objeto de tipo comparator, que no comparable. 00:05:37
Es decir, necesito pasarle un objeto que sea de esa clase o que la implemente y que guarde el criterio de ordenación. 00:06:01
Pues es lo primero que vamos a hacer. 00:06:12
Vamos a hacernos la clase correspondiente 00:06:14
A ese criterio de ordenación 00:06:17
Pues venga 00:06:18
Me voy a hacer yo aquí en ejer 2 00:06:20
Una nueva clase 00:06:23
Nueva clase 00:06:24
Esta clase para que va a servir 00:06:26
Para el criterio 00:06:29
Nota 00:06:30
Criterio 00:06:31
Nota descendente 00:06:34
Descendente 00:06:36
Vale 00:06:39
Pues este es el objeto que yo voy a 00:06:43
instanciar aquí, new criterio nota descendente, es el criterio que yo voy a instanciar aquí, 00:06:45
pero claro, criterio nota descendente, este objeto tiene que ser un objeto, ser capaz 00:06:58
de ser un criterio de ordenación, ser capaz, tal y como lo tengo yo ahora mismo todavía 00:07:06
no es nada, pues para ser 00:07:10
criterio de ordenación tiene que implementar 00:07:12
una interfaz 00:07:15
que se llama comparator 00:07:17
tiene que implementar esa interfaz 00:07:19
que está en java útil 00:07:23
entonces 00:07:26
lo mismo, comparator es genérica 00:07:28
¿quiere yo un criterio de ordenación 00:07:30
para comparar cualquier cosa con cualquier cosa? 00:07:32
no, este criterio de ordenación 00:07:36
es para comparar alumnos entre sí 00:07:37
Pues entonces 00:07:39
Voy a 00:07:41
Parametrizar 00:07:43
Dar un valor 00:07:45
A la clase Header Comparator así 00:07:46
Vale, pues el compilador 00:07:49
Lógicamente me dice 00:07:54
Perdona, si quieres implementar esta interfaz 00:07:55
Tienes que sobreescribir 00:07:59
El método que tiene vacío 00:08:00
Si o si, si no lo puedes implementar algo 00:08:01
Si no sobreescribes el método que tiene vacío 00:08:04
O eso te vuelves abstracta, tú verás 00:08:05
No, hombre, yo quiero implementar el método 00:08:07
Venga, ponemos aquí a ver cuál es 00:08:10
Pues es este 00:08:12
¿Vale? 00:08:15
¿Veis? Este no es el compare 00:08:17
Este es otro 00:08:18
Porque esto es independiente de la clase alumno 00:08:19
Está fuera 00:08:22
Este es un criterio al que le pasas 00:08:22
Dos objetos alumno 00:08:26
Y te devuelve menos uno 00:08:27
Si este va antes 00:08:30
Cero si está en la misma posición 00:08:31
Según ese criterio 00:08:34
Y más uno si este va después 00:08:35
¿Vale? 00:08:37
Pues yo ahora ya lo programo para que funcione exactamente así. 00:08:40
¿Cómo quiero yo? Por orden descendente de nota. 00:08:43
Pues entonces esto que sea o2.nota menos o1.nota. 00:08:48
Como está afuera, con get, efectivamente. 00:09:03
¿Vale? Entonces, si el primero tiene la nota más baja, 00:09:16
me da positivo, 00:09:20
eso significa que va después. 00:09:22
Luego ese es el orden descendente de nota. 00:09:26
Van primero los de notas más altas. 00:09:29
Vale. 00:09:32
Uy, que me mato. 00:09:34
Pues esto es un criterio que va por libre. 00:09:35
Un criterio que va por libre. 00:09:37
Es un comparador. 00:09:38
Esto es un comparador entre alumnos. 00:09:39
Es un comparador. 00:09:41
Y podría haber muchos comparadores. 00:09:43
Criterio nombre más largo. 00:09:48
y yo aquí me haría el compare 00:09:50
para compararlos por el nombre 00:09:52
de mayor longitud y no alfabético 00:09:54
me haría los comparadores 00:09:56
que me dieran la gana 00:09:58
son comparadores 00:09:59
en este caso de alumnos 00:10:03
si yo quiero comparar profesores 00:10:05
pues me hago comparadores de profesor 00:10:08
y puedo aquí en el compare como lo comparo 00:10:10
son clases aparte 00:10:12
comparadores entre alumnos, comparadores entre profesores 00:10:14
vale pues 00:10:17
ahora este objeto comparador 00:10:20
es el que necesita 00:10:22
el método sort 00:10:24
entonces si yo al método sort le paso 00:10:25
un comparador, ya ignora 00:10:31
si alumno era comparable o no lo era 00:10:33
si no lo es, no pasa nada 00:10:36
si lo es, lo ignoro 00:10:37
porque la comparación entre alumnos 00:10:38
la voy a hacer según este comparador 00:10:41
la voy a hacer según este 00:10:43
¿vale? 00:10:44
y ahora ya 00:11:06
si añadimos en el main 00:11:07
ese caso 00:11:08
para probarlo 00:11:11
bueno, este de aquí 00:11:12
mostrar alumnos 00:11:19
por nota 00:11:24
descendente 00:11:27
vale 00:11:30
nos hacemos el caso 00:11:33
el caso 8 que va a ser 00:11:36
igual que el 6 00:11:46
cambiando el método al que llamamos 00:11:48
entonces me voy a copiar el 6 00:11:50
me voy a copiar 00:11:51
el 6 que es este 00:11:54
caso 6 00:11:56
me lo pongo aquí debajo 00:12:01
este sería el caso 8 00:12:03
caso 8 00:12:07
NIF del profesor 00:12:09
si ese profesor 00:12:11
existe, recupérame el 00:12:13
profe y llama 00:12:15
al método este otro 00:12:17
llamas 00:12:19
a este 00:12:21
que era 00:12:22
no le puse el 00:12:25
¿Cómo se llamaba? 00:12:35
Alumnos 00:12:43
A ver, ¿por qué no me aparece aquí? 00:12:43
Profesor 00:12:50
Ah, porque está public 00:12:51
Está private, perdón 00:12:53
Vale 00:12:56
Por eso no me aparecía 00:12:57
Vale, pues entonces 00:12:59
Ahora ya sí me va a aparecer 00:13:03
Punto 00:13:04
Alumnos, nota descendente 00:13:08
Vale 00:13:15
Vale, pues ya está 00:13:15
Vamos a ver si nos lo hace y paramos 00:13:23
Vamos a ver solo si nos lo hace 00:13:29
En la consola teníamos este 00:13:32
Nuevo profe 00:13:36
1, 2, 3 y 4 00:13:45
Nombre del profesor 00:13:47
Agregar alumno 00:13:49
Vamos a agregar primero al de menor nota 00:13:51
Para que lo recoloque 00:13:54
¿Vale? 00:13:56
Este tiene la menor nota, el 4 00:13:58
Y ahora 00:14:00
¿A qué profe? 00:14:05
1, 2, 3 y 4 00:14:06
Venga, agregamos 00:14:08
2, 2, 2, 2 00:14:10
Este tiene 00:14:12
Nombre del alumno 00:14:13
Juan, vale 00:14:15
1, 2, 3 y 4 00:14:17
Ah, vale, es que no les ponemos nota 00:14:19
Aquí hay que ponerla después 00:14:22
Poner nota a un alumno, vale, vale 00:14:23
Venga, vamos a ponerle nota 00:14:25
Ni del alumno era 1, 1, 1, 2, 2, 2 00:14:27
¿No? Pues al 1, 1 00:14:30
1, 1, 1, le vamos a evaluar poniéndole 00:14:32
del profesor 1, 2, 3, 4 00:14:34
vamos a evaluar poniendo un 0 00:14:36
0 ya 00:14:38
¿Cómo? 00:14:40
Ah, bueno, pues le hemos puesto un 0 00:14:42
Y ahora 00:14:43
poner nota al 00:14:45
segundo, le vamos a poner una nota más alta para que 00:14:48
lo cambie de orden 00:14:50
Queremos evaluar al 2, 2, 2, 2 00:14:51
Nib del profesor que lo tiene 00:14:54
este, nota que le vamos a 00:14:56
poner un 5 00:14:58
Vale 00:14:59
Y ahora 00:15:01
Elegimos la opción 00:15:03
Nib de la 00:15:08
Uy, no, 7 no 00:15:10
Bueno, si pongo 00:15:12
1 que no es, no lo encuentra y ya está, ¿no? 00:15:15
Vale 00:15:19
No se ha encontrado, vale 00:15:19
Alumnos por nota descendente 00:15:23
¿De quién? De 1, 2, 3 y 4 00:15:27
Efectivamente los ha reordenado 00:15:29
Ha puesto primero el del 5 y luego el del 0 00:15:33
Los ha reordenado aunque los habíamos insertado en el otro orden 00:15:35
¿Vale? 00:15:38
Venga, pues ahora sí que paramos 00:15:41
Paramos y luego seguís haciendo ejercicios 00:15:43
Materias:
Programación
Niveles educativos:
▼ Mostrar / ocultar niveles
  • Formación Profesional
    • Ciclo formativo de grado superior
      • Primer Curso
Subido por:
Raquel G.
Licencia:
Todos los derechos reservados
Visualizaciones:
1
Fecha:
10 de febrero de 2026 - 13:53
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
15′ 49″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
65.26 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid