Bien, el método listar con el short está funcionando bien, pero hay dos problemas que podemos mejorar
optimizar.
Bueno, lo primero es que estamos duplicando código.
Se fijan, este código del switch es muy parecido a este de acá.
Solo que se han vuelta el aire.
Bueno, eso lo puedo mejorar con un método y reutilizar ese método.
Lo segundo que kaikki ordenamos con el short está afectando de forma directa al datasource, es decir,
está modificando la lista original.
Por lo tanto, también afecta al distar.
Es decir, que ordenamos se ve afectado el listar y los datos originales.
Y no, la idea es que sea inmutable el DataSource, es decir, a partir del DataSource crear una nueva
lista, ordenar esa nueva lista y retornar esa lista modificada pero no el original.
Bien, partamos primero por eso, pero es super simple.
Lo primero vamos a crear una nueva lista, un list de cliente.
Le vamos a llamar lista ordenada.
Perfecto New railes se fijan.
Vamos a crear una nueva lista de cero.
Entonces, a partir del DataSource por constructor de la red list podemos colocar otro listo.
Disputo DataSource.
Perfecto.
Entonces, a partir de este de estos datos originales, creamos esta lista.
Ordenamos esta lista.
Entonces, en vez de DataSource lista ordenada sort.
Y al final retornamos lista ordenada.
Muy importante.
Así no afecta, no influye en nada.
Ahora comparemos y probemos con este cambio.
Vamos a ejecutar ejemplo repositorio.
Ahora fíjense que por acá está ordenando.
Se fijan de forma ascendente y por el apellido.
Acá mismo ordena y después volvemos a ejecutar el distar.
Voy a comentar acá el eliminar.
Lo voy a comentar solamente por ahora.
Si se fijan este de acá, este listar con el orden ya no afecta a este de acá.
Veamos.
En el eliminar el extremo ve a Lucy Andrés, se fijan el orden original con el cual lo registramos,
János ve a Lucia en 3, así que está perfecto, mientras que el de acá el editar por acá tenemos el
editar, acá tenemos con el orden ascendente y el apellido se fijan m g m acá esta de acá no cuenta
ya porque este es el detalle el por ahí.
Entonces sería g m mp te fijan ordena de forma ascendente por el apellido, así que está perfecto y
no afecta a los datos originales.
Ahora como estaban?
T si se acuerdan esto lo de comentar.
Acá vamos a colocar DataSource.
Lleca DataSource si afectaba.
Si ejecutamos.
Estas bolitas son iguales.
André, Lucy, Bhajana, Andrés, Lucy, Bea hija no tiene por qué MMP, entonces está afectando la
idea de que no es importante que sea inmutable retornar una anual lista ordenada y no modificar la original.
Lo dejamos de esa forma.
Eso sería lo correcto.
Bien, lo segundo es reutilizar esto el switch, claro, porque estamos duplicando código.
El Heidy nombre, apellido se fijan, es muy parecido, solamente damos vuelta los valores.
Entonces se puede llevar a un método?
Bueno, hay varias formas de implementar esto, como lo tenemos implementado con una person lanta.
Acá, acá solamente nos permite ejecutar alguna acción con estos datos que sería ordenar.
Por lo tanto, en esta implementación no podemos tener un método.
A diferencia de una clase anónima.
Si tuviéramos una clase anónima lo podríamos implementar dentro de la implementación de esta clase,
que en paraditos a él lo podríamos hacer.
De hecho lo podríamos ver para que vean la diferencia también.
Bien está claro que con episo Holanda no se puede.
Pero lo vamos a hacer.
De hecho, voy a cortar esto.
Es todo acá, solamente lo de cortar, nada más.
La implementación de las llaves.
Nada más que lo voy a cortar.
Esto de acá de la llave, desde que se abre hasta que se cierra.
Lo cortamos.
Perfecto.
New.
Con parato.
Listo.
Ahora voy a pegar acá, pero en el método comprar.
Recuerde que corté.
Ahora lo pego.
Listo.
Ahí tenemos la implementación.
Pedro Karanka a y Acadé.
Ves cómo es una clase anónima?
Acá tenemos el new que en pared tor, en fin, acá tenemos el método compar es una implementación.
Se fijan, acá podríamos tener otro método para esto, para reutilizar.
Entonces voy a copiar el switch.
Lo voy a copiar.
Acá vamos a crear un método acá, justo cuando termina el cierre la llave.
Recuerden que se el método compar, se abre, se cierra, donde se cierra un método que va a retornar
un entero con el resultado, con el orden Privat.
Pues es privado porque es un método solamente de esta implementación que vamos a ocupar dentro de esta
clase anónima.
INT Bueno, qué nombre le podemos colocar?
Da lo mismo comparar ordenando como queramos ordenar, da lo mismo ordenar cliente A, cliente B.
Perfecto.
Acá tenemos campo, el campo lo tenemos acá.
Recuerden que se pasa por argumento acá.
Entonces lo tenemos disponible ya, pero faltaría el resultado porque tenemos que retornar el resultado.
Int Resultado igual 0 Yaca.
Retornamos acá.
Se fija listo.
Ahí tenemos el método.
Entonces ahora lo utilizamos acá.
Entonces, en vez de esto, bueno, simplemente quitamos esto y también quitamos esto y lo reemplazamos
por el método.
Por ejemplo, 10 10 punto ordenase.
OIV?
Ah, comadre!
Perfecto.
Y acá también disputo ordenar.
Pero acá sería Beco más B es A y A es B se fijan, damos vuelta.
Entonces acá Abbe vea y listo.
Ahí lo tenemos implementado, reutilizando siempre la misma implementación, el mismo código.
Pero falta un detalle.
Falta asignar acá el resultado a lo que retorna el ordenar.
Entonces cacería resultado igual ahorase resultado igual es importante, claro, porque ordenamos,
obtenemos el entero y se lo asignamos acá al resultado se fijan.
Listo, lo tenemos una forma.
Entonces bueno, obviamente vamos a vamos a probar.
Ejemplo repositorio.
Acá tenemos ascendente, lo vamos a probar.
Acá tenemos comentado el eliminar.
Ejecutados.
Entonces acá por?
Recuerden que está ordenando el editar acá en el editar acá, ordenar el repositorio AFK tonce acá sería
G.
Mm.
P.
Recuerden que esta acá.
No cuenta.
De hecho podrías colocar un separador acá.
Shout.
Ahora si.
Entonces ora descendente.
Va tras Revell la P al principio.
Pérez Mena Martínez y al final Guzmán.
Juan Pérez Mena Martínez y al final Guzmán.
Así que está perfecto.
Ahora vamos a ordenar por nombre DESC descendente.
Al final han tres, pero primero Luce, Jano, Vea, Andrés a V.
J.
L se fijan?
André viajás, no lo sé.
Así que está perfecto.
Funciona bien.
Es decir, en una forma el único pero que tiene es que estamos perdiendo la característica de expresión
blanda de una programación más funcional.
Claro, porque estamos obligados a implementar el new para either como una clase anónima para poder
implementar este método y poder reutilizarlo.
Pero bien, hay otra forma.
Entonces, qué vamos a hacer?
Vamos a cortar esto?
Lo cortamos.
Este método privado Privat.
ÂQuÃ marca error, pero no se preocupen.
Está bien.
De hecho, lo voy a comentar acá.
Bien, acá me marca en el new Compare Itor, que se puede crear como presun lanta, tal como lo teníamos
antes.
Aunque lo podríamos hacer de forma manual.
Así que esa es la forma automática.
Acá colocamos reemplazar y que era constante.
Se fija o lo hacemos de forma manual.
Voy a comentar acá, le comentamos puede quitar esto?
Acá lo dejamos acá y acá Flecha.
Y recuerden que.
Una llave.
Entonces este cierre le quitamos.
Podemos quitar también el tipo, ya que es por defecto.
Y faltaría el ordenar.
Pero bien, este método ordenar lo podemos dejar como método de la clase.
Acá.
Simplemente lo pega más acá se fijan acá, no en el carro, pero como es un método de la clase que fuera
del contexto del método listar, porque recuerda el método litat tiene el campo, pero acá no tenemos
el campo.
Entonces lo pasamos por argumento.
Entonces una forma sería pasar por argumento en el ordenar el campo.
Entonces en ordenar en 10, ordenar campo.
Campo.
Y acá, en ordenar estrechen campo.
A ese día lo tenemos como un método propio de la clase cliente, el repositorio y lo podríamos dejar
de esa forma.
Si probamos va a resultar exactamente igual.
Se fijan acá está a B.
J?
L por nombre.
Pero dentro del método estamos trabajando con variables que se pasan por argumento Campo A y B, no
hay ninguna variable propia de la clase.
No hay un atributo de la clase.
Por lo tanto, podría ser estático.
Por ejemplo, un public static ordenar.
Y acá, en vez de Liz, sería simplemente ordenar un método estático.
También otra forma, de hecho sería mejor, porque son puros argumentos y nada más.
No hay ningún tiz, no hay ningún atributo método que estemos utilizando acá que sea de la clase.
Entonces podría ser estático.
También puede ser.
Se fijan diferente alternativa.
Incluso podría cortar esto.
Este método se fijan.
Acá hay mucha forma.
Lo quitamos de la implementación de la clase y lo podemos llevar a la interfaz.
Ordenarles.
Acá en el dictarle recuerden que podemos tener acá métodos estáticos.
Se fijan static it órdenes o incluso diffcil.
También puede ser.
Pero si es estático.
Acá tengo que indicar el nombre de la interfaz para llamarla por su nombre.
Punto el método.
Entonces ordénale punto ordenar.
Se fijan?
Una implementación por defecto que tengo acá de forma estática en la interfaz.
También.
O bien puede ser difficult un método de la interfaz de default, que también se puede sobrescribir,
no es estático.
Por lo tanto, en la clase acá sería así nomás ordenar invoca el método ordenar que de la interfaz.
De hecho, acá dice la interfaz ordenarles repositorio Melody fold.
Incluso acá lo podríamos sobrescribir y darle una implementación propia en la clase que implementa la
interfaz.
Se fijan diferente forma bien como son tantas forma la cual podemos utilizar.
Cuál sería la más adecuada?
Va a depender del criterio nuestro como lo queramos manejar.
Yo creo que la dos mejores formas sería bueno.
Uno podría ser esta en difficult dar una implementación por defecto para ordenar.
Podría quedar así o bien en la clase cliente el repositorio.
Acá también.
Tanto la interfaz como en la clase propia, pero también cómo es una implementación propia del distar
de esta clase.
Lo estamos utilizando solamente acá, quizá podría quedar mejor en la propia clase, en cliente, el
repositorio.
Entonces lo cortamos.
Y lo llevamos acá.
Obviamente el no va y lo dejamos como estático, ya que es mucho más reutilizable y mucho más optimizado
nuestro código, nada más.
Continuamos en la siguiente clase.