SlideShare a Scribd company logo
1 of 5
TUTORIAL ORDENAR LISTAS
¿Alguna vez te has visto en la necesidad de ordenar una colección,como lo es una lista (List) y no
sabes cómo?
Existen muchos ejemplos en internet, pero aquí lo ilustraremos de la forma más sencilla posible,
ordenar un ArrayList de objetos por sus propiedades, lo cual se hace a través de las interfaces
Comparable y Comparator.
Generalmente usamos el método Collections.sort() para ordenar un arraylist sencillo. Sin
embargo,si tuArrayListesde untipode objetopersonalizado,enesecasotienesdosopcionespara
ordenar,el usode lasinterfacescomparableycomparator.Antesde verel ejemplo,veamoscuál es
la salida cuando intentamos ordenar un arraylist de Objects sin implementar alguna de estas
intefaces.
¿Por qué necesitamos de Comparable y Comparator?
Considerael siguiente ejemplo–tengolaclase Trabajadorque tiene propiedadescomonombre del
trabajador, apellidos, número de nómina y fecha de nacimiento.
public class Trabajador {
private String nombreTrabajador;
private String apPaternoTrabajador;
private String apMaternoTrabajador;
private int nomina;
public Trabajador(int nomina, String nombreTrabajador, String
apPaternoTrabajador, String apMaternoTrabajador) {
this.nomina = nomina;
this.nombreTrabajador = nombreTrabajador;
this.apPaternoTrabajador = apPaternoTrabajador;
this.apMaternoTrabajador = apMaternoTrabajador;
}
public String getNombreTrabajador() {
return nombreTrabajador;
}
public void setNombreTrabajador(String nombreTrabajador) {
this.nombreTrabajador = nombreTrabajador;
}
public String getApPaternoTrabajador() {
return apPaternoTrabajador;
}
public void setApPaternoTrabajador(String apPaternoTrabajador) {
this.apPaternoTrabajador = apPaternoTrabajador;
}
public String getApMaternoTrabajador() {
return apMaternoTrabajador;
}
public void setApMaternoTrabajador(String apMaternoTrabajador) {
this.apMaternoTrabajador = apMaternoTrabajador;
}
public int getNomina() {
return nomina;
}
public void setNomina(int nomina) {
this.nomina = nomina;
}
}
Y quierotenerun ArrayListof StudentObject. We doitlike this –
import java.util.*;
public class ArrayListSorting {
public static void main(String args[]){
ArrayList<Trabajador> arraylist = new ArrayList<Trabajador>();
arraylist.add(new Trabajador(23, "Lourdes", "Ríos", "Carás"));
arraylist.add(new Trabajador(387, "Raul", "Ríos", "Carás"));
arraylist.add(new Trabajador(98, "Benito", "Bodoque", "del Campo"));
Collections.sort(arraylist);
for(Trabajador str: arraylist){
System.out.println(str);
}
}
}
Intenté llamara Collections.sort() enla Listade Objectsy obtuve unmensaje de errorcomo
este –
Exceptioninthread“main”java.lang.Error:Unresolvedcompilationproblem:
Bound mismatch: The generic method sort(List) of type Collections is not
applicable for the arguments (ArrayList). The inferred type Trabajador is not a
valid substitute for the bounded parameter > at
ArrayListSorting.main(ArrayListSorting.java:11)
Razón: Llamé al método sort en una ArrayListde Objectsque realmente nofuncionaa menosque
uses interfaces como Comparable y Comparator.
Ahoradebeshabercomprendidolaimportanciade estasinterfaces.Veamoscómousarlas.
Ordenamiento de ArrayList<Object> con Comparable
Digamos que necesitamos ordenar el ArrayList<Trabajador> basado en la propiedad Apellidodel
Trabajador. Así es como puede hacerse – Primero implementar la interface Comparable y luego
sobrescribir el método compareTo.
public class Trabajador implements Comparable {
private String nombreTrabajador;
private String apPaternoTrabajador;
private String apMaternoTrabajador;
private int nomina;
public Trabajador(int nomina, String nombreTrabajador, String
apPaternoTrabajador, String apMaternoTrabajador) {
this.nomina = nomina;
this.nombreTrabajador = nombreTrabajador;
this.apPaternoTrabajador = apPaternoTrabajador;
this.apMaternoTrabajador = apMaternoTrabajador;
}
...
// los métodos getter y setter son los mismos que los del ejemplo anterior
...
@Override
public int compareTo(Trabajador comparaTrab) {
int comparaNomina=((Trabajador) comparaTrab).getNomina();
// Por orden Ascendente
return this.nomina - comparaNomina;
// Por orden Descendiente hacerlo así
//return comparanomina-this.nomina;
}
@Override
public String toString() {
return "[ nomina=" + nomina + ", nombre=" + nombretrabajador + ",
apaterno=" + apPaternoTrabajador + ", amaterno=" + apMaternoTrabajador + "]";
}
}
Ahorapodemosmuybieninvocara Collections.sort enArrayList
import java.util.*;
public class ArrayListSorting {
public static void main(String args[]){
ArrayList<Trabajador> arraylist = new ArrayList<Trabajador>();
arraylist.add(new Trabajador(223, "Diana", "Gómez","Azueta"));
arraylist.add(new Trabajador(245, "Raul", "Benítez”, "Niss"));
arraylist.add(new Trabajador(209, "Karla", "Ochoa", "Rodas"));
Collections.sort(arraylist);
for(Trabajador str: arraylist){
System.out.println(str);
}
}
}
Salida:
[ nomina=209, name=Karla, apaterno=Ochoa, amaterno=Rodas ]
[ nomina=223, name=Diana, apaterno=Gómez, amaterno=Azueta ]
[ nomina=245, name=Raul, apaterno=Benítez, amaterno=Niss ]
Comparable hizo nuestro trabajo, ¿por qué necesitamos a Comparator?
Usando Comparable podemosordenarporunasolapropiedadque debeser de untipoentero.Con
el fin de ordenar el ArrayList basado en múltiples propiedades podemos usar Comparator.
Ordenandomultiplespropiedadesde ArrayList<Object> con Comparator
Estamossobrescribiendoel método compare de Comparator para ordenar.
import java.util.Comparator;
public class Trabajador {
private String nombreTrabajador;
private String apPaternoTrabajador;
private String apMaternoTrabajador;
private int nomina;
public Trabajador(int nomina, String nombreTrabajador, String
apPaternoTrabajador, String apMaternoTrabajador) {
this.nomina = nomina;
this.nombreTrabajador = nombreTrabajador;
this.apPaternoTrabajador = apPaternoTrabajador;
this.apMaternoTrabajador = apMaternoTrabajador;
}
...
// los métodos getter y setter son los mismos que los del ejemplo anterior
...
/*Comparator para ordenar la lista por nombre del trabajador*/
public static Comparator<Trabajador> nombreTrabajadorComparator = new
Comparator<Trabajador>() {
public int compare(Trabajador s1, Trabajador s2) {
String nombreTrabajador1 = s1.getnombreTrabajador().toUpperCase();
String nombreTrabajador2 = s2.getnombreTrabajador().toUpperCase();
// orden ascendente
return nombreTrabajador1.compareTo(nombreTrabajador2);
// orden descendente
//return nombreTrabajador2.compareTo(nombreTrabajador1);
}};
/*Comparator para ordenar la lista por número de nómina*/
public static Comparator<Trabajador> nominaComparator = new
Comparator<Trabajador>() {
public int compare(Trabajador s1, Trabajador s2) {
int nomina1 = s1.getNomina();
int nomina2 = s2.getNomina();
/*Para orden ascendente*/
return nomina1-nomina2;
/*Para orden descendente*/
//nomina2-nomina1;
}};
@Override
public String toString() {
return "[ nomina=" + nomina + ", nombre=" + nombretrabajador + ",
apaterno=" + apPaternoTrabajador + ", amaterno=" + apMaternoTrabajador + "]";
}
}
Clase Detalles:
import java.util.*;
public class Detalles {
public static void main(String args[]){
ArrayList<Trabajador> arraylist = new ArrayList<Trabajador>();
arraylist.add(new Trabajador(101, "Zues", 26));
arraylist.add(new Trabajador(505, "Abey", 24));
arraylist.add(new Trabajador(809, "Vignesh", 32));
/*Ordenamiento basado en el Nombre del Trabajador*/
System.out.println("Ordenamiento por Nombre del Trabajador:");
Collections.sort(arraylist, Trabajador.nombreTrabajadorComparator);
for(Trabajador str: arraylist){
System.out.println(str);
}
/* Ordenamiento basado en la propiedad nómina*/
System.out.println("Ordenamiento por nómina:");
Collections.sort(arraylist, Trabajador.nominaComparator);
for(Trabajador str: arraylist){
System.out.println(str);
}
}
}
Salida:
Ordenamiento por Nombre del Trabajador:
[ nomina=223, name=Diana, apaterno=Gómez, amaterno=Azueta ]
[ nomina=209, name=Karla, apaterno=Ochoa, amaterno=Rodas ]
[ nomina=245, name=Raul, apaterno=Benítez, amaterno=Niss ]
Ordenamiento por nómina:
[ nomina=209, name=Karla, apaterno=Ochoa, amaterno=Rodas ]
[ nomina=223, name=Diana, apaterno=Gómez, amaterno=Azueta ]
[ nomina=245, name=Raul, apaterno=Benítez, amaterno=Niss ]

More Related Content

What's hot

Java script teoria
Java script teoriaJava script teoria
Java script teoria
ssxdan
 
Manual de macros2 pre
Manual de macros2 preManual de macros2 pre
Manual de macros2 pre
jtk1
 
49 Php. Funciones De Usuario
49 Php. Funciones De Usuario49 Php. Funciones De Usuario
49 Php. Funciones De Usuario
José M. Padilla
 
Programar Macros
Programar MacrosProgramar Macros
Programar Macros
joajz
 
DAW - Estructuras de almacenamiento
DAW - Estructuras de almacenamientoDAW - Estructuras de almacenamiento
DAW - Estructuras de almacenamiento
vay82
 

What's hot (16)

Ensayo iv
Ensayo ivEnsayo iv
Ensayo iv
 
Java script teoria
Java script teoriaJava script teoria
Java script teoria
 
Manual de macros2 pre
Manual de macros2 preManual de macros2 pre
Manual de macros2 pre
 
Lambdas y API Stream - Apuntes de Java
Lambdas y API Stream - Apuntes de JavaLambdas y API Stream - Apuntes de Java
Lambdas y API Stream - Apuntes de Java
 
Java colecciones
Java coleccionesJava colecciones
Java colecciones
 
49 Php. Funciones De Usuario
49 Php. Funciones De Usuario49 Php. Funciones De Usuario
49 Php. Funciones De Usuario
 
Programar Macros
Programar MacrosProgramar Macros
Programar Macros
 
Java 8 - Nuevas características
Java 8 - Nuevas característicasJava 8 - Nuevas características
Java 8 - Nuevas características
 
Arrays en PHP y Funciones de Mysql
Arrays en PHP y Funciones de MysqlArrays en PHP y Funciones de Mysql
Arrays en PHP y Funciones de Mysql
 
Macros en excel [106 paginas en español]
Macros en excel [106 paginas   en español]Macros en excel [106 paginas   en español]
Macros en excel [106 paginas en español]
 
42 Php. Bucles Foreach
42 Php. Bucles Foreach42 Php. Bucles Foreach
42 Php. Bucles Foreach
 
Funciones Excel (3) : Funciones de Texto
Funciones Excel (3) : Funciones de TextoFunciones Excel (3) : Funciones de Texto
Funciones Excel (3) : Funciones de Texto
 
Colecciones
ColeccionesColecciones
Colecciones
 
DAW - Estructuras de almacenamiento
DAW - Estructuras de almacenamientoDAW - Estructuras de almacenamiento
DAW - Estructuras de almacenamiento
 
Excel texto
Excel textoExcel texto
Excel texto
 
FUNCION BUSCARV
FUNCION BUSCARVFUNCION BUSCARV
FUNCION BUSCARV
 

Viewers also liked

UPM toxicity of TMOF
UPM toxicity of TMOFUPM toxicity of TMOF
UPM toxicity of TMOF
entogenex
 
6 Jan 2012 1ID Division Post
6 Jan 2012 1ID Division Post 6 Jan 2012 1ID Division Post
6 Jan 2012 1ID Division Post
Noel Waterman
 

Viewers also liked (20)

The toad teoría
The toad teoríaThe toad teoría
The toad teoría
 
Tareas Programadas de Oracle con Toad 10
Tareas Programadas de Oracle con Toad 10Tareas Programadas de Oracle con Toad 10
Tareas Programadas de Oracle con Toad 10
 
Conceptos introductorios al diseño de Servicios SOA
Conceptos introductorios al diseño de Servicios SOAConceptos introductorios al diseño de Servicios SOA
Conceptos introductorios al diseño de Servicios SOA
 
Analisis ¿No es eso para personas poco inteligentes?
Analisis ¿No es eso para personas poco inteligentes?Analisis ¿No es eso para personas poco inteligentes?
Analisis ¿No es eso para personas poco inteligentes?
 
Orquestación de Servicios y SOA
Orquestación de Servicios y SOAOrquestación de Servicios y SOA
Orquestación de Servicios y SOA
 
Apache Camel
Apache CamelApache Camel
Apache Camel
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Apache Camel - Parte II
Apache Camel - Parte IIApache Camel - Parte II
Apache Camel - Parte II
 
Orquestación o coreografía
Orquestación o coreografíaOrquestación o coreografía
Orquestación o coreografía
 
Diseño de servicios ATM
Diseño de servicios ATMDiseño de servicios ATM
Diseño de servicios ATM
 
Arquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoArquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseño
 
Patrones diseño de software
Patrones diseño de softwarePatrones diseño de software
Patrones diseño de software
 
Integrando sonar
Integrando sonarIntegrando sonar
Integrando sonar
 
Tips and Tricks of Toad for Oracle 10.6
Tips and Tricks of Toad for Oracle 10.6Tips and Tricks of Toad for Oracle 10.6
Tips and Tricks of Toad for Oracle 10.6
 
Orquestacion y Coreografia de Servicios Web
Orquestacion y Coreografia de Servicios WebOrquestacion y Coreografia de Servicios Web
Orquestacion y Coreografia de Servicios Web
 
UPM toxicity of TMOF
UPM toxicity of TMOFUPM toxicity of TMOF
UPM toxicity of TMOF
 
bladder cancer
bladder cancerbladder cancer
bladder cancer
 
6 Jan 2012 1ID Division Post
6 Jan 2012 1ID Division Post 6 Jan 2012 1ID Division Post
6 Jan 2012 1ID Division Post
 
Sun Tzu
Sun TzuSun Tzu
Sun Tzu
 
Conference
ConferenceConference
Conference
 

Similar to Tutorial - Ordenar listas Java

POO Unidad 2: Clases y objetos Ejercicio 1
POO Unidad 2: Clases y objetos Ejercicio 1POO Unidad 2: Clases y objetos Ejercicio 1
POO Unidad 2: Clases y objetos Ejercicio 1
Fabiola Valerio Ramirez
 
Declaración y creación de un arraylist
Declaración y creación de un arraylistDeclaración y creación de un arraylist
Declaración y creación de un arraylist
Robert Wolf
 
Vectores, array y sus métodos
Vectores, array y sus métodosVectores, array y sus métodos
Vectores, array y sus métodos
Orlando Verdugo
 
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
jaircazarin
 
2 2 2 Arraylist Y Operadores
2 2 2 Arraylist Y Operadores2 2 2 Arraylist Y Operadores
2 2 2 Arraylist Y Operadores
UVM
 
Clase6 collections
Clase6 collectionsClase6 collections
Clase6 collections
jorg_marq
 

Similar to Tutorial - Ordenar listas Java (20)

Arraylist
ArraylistArraylist
Arraylist
 
Jyoc java-cap11 colecciones
Jyoc java-cap11 coleccionesJyoc java-cap11 colecciones
Jyoc java-cap11 colecciones
 
Unidad 2: Clases y objetos Ejercicio 1
Unidad 2: Clases y objetos Ejercicio 1Unidad 2: Clases y objetos Ejercicio 1
Unidad 2: Clases y objetos Ejercicio 1
 
POO Unidad 2: Clases y objetos Ejercicio 1
POO Unidad 2: Clases y objetos Ejercicio 1POO Unidad 2: Clases y objetos Ejercicio 1
POO Unidad 2: Clases y objetos Ejercicio 1
 
Best Practices
Best PracticesBest Practices
Best Practices
 
colecciones en java
colecciones en javacolecciones en java
colecciones en java
 
Leccion 5 Java
Leccion 5 JavaLeccion 5 Java
Leccion 5 Java
 
Declaración y creación de un arraylist
Declaración y creación de un arraylistDeclaración y creación de un arraylist
Declaración y creación de un arraylist
 
Vectores, array y sus métodos
Vectores, array y sus métodosVectores, array y sus métodos
Vectores, array y sus métodos
 
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
 
02 Bases Del Lenguaje Java
02   Bases Del Lenguaje Java02   Bases Del Lenguaje Java
02 Bases Del Lenguaje Java
 
2 2 2 Arraylist Y Operadores
2 2 2 Arraylist Y Operadores2 2 2 Arraylist Y Operadores
2 2 2 Arraylist Y Operadores
 
Funciones con vectores c++
Funciones con vectores c++Funciones con vectores c++
Funciones con vectores c++
 
Tema6
Tema6Tema6
Tema6
 
Herencia clase
Herencia claseHerencia clase
Herencia clase
 
Algoritmos y Estructura de datos_Semana5 (3).ppt
Algoritmos y Estructura de datos_Semana5 (3).pptAlgoritmos y Estructura de datos_Semana5 (3).ppt
Algoritmos y Estructura de datos_Semana5 (3).ppt
 
Clase6 collections
Clase6 collectionsClase6 collections
Clase6 collections
 
Implementación de Aplicaciones Basadas en Texto
Implementación de Aplicaciones Basadas en TextoImplementación de Aplicaciones Basadas en Texto
Implementación de Aplicaciones Basadas en Texto
 
Array listlistas
Array listlistasArray listlistas
Array listlistas
 
4_colecciones.ppt
4_colecciones.ppt4_colecciones.ppt
4_colecciones.ppt
 

More from Abimael Desales López

El mejor enfoque para una arquitectura orientada a servicios
El mejor enfoque para una arquitectura orientada a serviciosEl mejor enfoque para una arquitectura orientada a servicios
El mejor enfoque para una arquitectura orientada a servicios
Abimael Desales López
 

More from Abimael Desales López (9)

Aprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDB
 
File Processing - Batch Process Execution
File Processing - Batch Process ExecutionFile Processing - Batch Process Execution
File Processing - Batch Process Execution
 
File Processing - Process Execution Solution
File Processing - Process Execution SolutionFile Processing - Process Execution Solution
File Processing - Process Execution Solution
 
Tutorial - REST con java (JAX-RS 2.0)
Tutorial - REST con java (JAX-RS 2.0)Tutorial - REST con java (JAX-RS 2.0)
Tutorial - REST con java (JAX-RS 2.0)
 
Patrones de Integración Empresariales
Patrones de Integración EmpresarialesPatrones de Integración Empresariales
Patrones de Integración Empresariales
 
Jpa modelos de componentes
Jpa   modelos de componentesJpa   modelos de componentes
Jpa modelos de componentes
 
Integración de Aplicaciones
Integración de AplicacionesIntegración de Aplicaciones
Integración de Aplicaciones
 
El mejor enfoque para una arquitectura orientada a servicios
El mejor enfoque para una arquitectura orientada a serviciosEl mejor enfoque para una arquitectura orientada a servicios
El mejor enfoque para una arquitectura orientada a servicios
 
SOA: Principios de Diseño de Servicios - Parte II
SOA: Principios de Diseño de Servicios - Parte IISOA: Principios de Diseño de Servicios - Parte II
SOA: Principios de Diseño de Servicios - Parte II
 

Tutorial - Ordenar listas Java

  • 1. TUTORIAL ORDENAR LISTAS ¿Alguna vez te has visto en la necesidad de ordenar una colección,como lo es una lista (List) y no sabes cómo? Existen muchos ejemplos en internet, pero aquí lo ilustraremos de la forma más sencilla posible, ordenar un ArrayList de objetos por sus propiedades, lo cual se hace a través de las interfaces Comparable y Comparator. Generalmente usamos el método Collections.sort() para ordenar un arraylist sencillo. Sin embargo,si tuArrayListesde untipode objetopersonalizado,enesecasotienesdosopcionespara ordenar,el usode lasinterfacescomparableycomparator.Antesde verel ejemplo,veamoscuál es la salida cuando intentamos ordenar un arraylist de Objects sin implementar alguna de estas intefaces. ¿Por qué necesitamos de Comparable y Comparator? Considerael siguiente ejemplo–tengolaclase Trabajadorque tiene propiedadescomonombre del trabajador, apellidos, número de nómina y fecha de nacimiento. public class Trabajador { private String nombreTrabajador; private String apPaternoTrabajador; private String apMaternoTrabajador; private int nomina; public Trabajador(int nomina, String nombreTrabajador, String apPaternoTrabajador, String apMaternoTrabajador) { this.nomina = nomina; this.nombreTrabajador = nombreTrabajador; this.apPaternoTrabajador = apPaternoTrabajador; this.apMaternoTrabajador = apMaternoTrabajador; } public String getNombreTrabajador() { return nombreTrabajador; } public void setNombreTrabajador(String nombreTrabajador) { this.nombreTrabajador = nombreTrabajador; } public String getApPaternoTrabajador() { return apPaternoTrabajador; } public void setApPaternoTrabajador(String apPaternoTrabajador) { this.apPaternoTrabajador = apPaternoTrabajador; } public String getApMaternoTrabajador() { return apMaternoTrabajador; } public void setApMaternoTrabajador(String apMaternoTrabajador) { this.apMaternoTrabajador = apMaternoTrabajador; } public int getNomina() { return nomina;
  • 2. } public void setNomina(int nomina) { this.nomina = nomina; } } Y quierotenerun ArrayListof StudentObject. We doitlike this – import java.util.*; public class ArrayListSorting { public static void main(String args[]){ ArrayList<Trabajador> arraylist = new ArrayList<Trabajador>(); arraylist.add(new Trabajador(23, "Lourdes", "Ríos", "Carás")); arraylist.add(new Trabajador(387, "Raul", "Ríos", "Carás")); arraylist.add(new Trabajador(98, "Benito", "Bodoque", "del Campo")); Collections.sort(arraylist); for(Trabajador str: arraylist){ System.out.println(str); } } } Intenté llamara Collections.sort() enla Listade Objectsy obtuve unmensaje de errorcomo este – Exceptioninthread“main”java.lang.Error:Unresolvedcompilationproblem: Bound mismatch: The generic method sort(List) of type Collections is not applicable for the arguments (ArrayList). The inferred type Trabajador is not a valid substitute for the bounded parameter > at ArrayListSorting.main(ArrayListSorting.java:11) Razón: Llamé al método sort en una ArrayListde Objectsque realmente nofuncionaa menosque uses interfaces como Comparable y Comparator. Ahoradebeshabercomprendidolaimportanciade estasinterfaces.Veamoscómousarlas. Ordenamiento de ArrayList<Object> con Comparable Digamos que necesitamos ordenar el ArrayList<Trabajador> basado en la propiedad Apellidodel Trabajador. Así es como puede hacerse – Primero implementar la interface Comparable y luego sobrescribir el método compareTo. public class Trabajador implements Comparable { private String nombreTrabajador; private String apPaternoTrabajador;
  • 3. private String apMaternoTrabajador; private int nomina; public Trabajador(int nomina, String nombreTrabajador, String apPaternoTrabajador, String apMaternoTrabajador) { this.nomina = nomina; this.nombreTrabajador = nombreTrabajador; this.apPaternoTrabajador = apPaternoTrabajador; this.apMaternoTrabajador = apMaternoTrabajador; } ... // los métodos getter y setter son los mismos que los del ejemplo anterior ... @Override public int compareTo(Trabajador comparaTrab) { int comparaNomina=((Trabajador) comparaTrab).getNomina(); // Por orden Ascendente return this.nomina - comparaNomina; // Por orden Descendiente hacerlo así //return comparanomina-this.nomina; } @Override public String toString() { return "[ nomina=" + nomina + ", nombre=" + nombretrabajador + ", apaterno=" + apPaternoTrabajador + ", amaterno=" + apMaternoTrabajador + "]"; } } Ahorapodemosmuybieninvocara Collections.sort enArrayList import java.util.*; public class ArrayListSorting { public static void main(String args[]){ ArrayList<Trabajador> arraylist = new ArrayList<Trabajador>(); arraylist.add(new Trabajador(223, "Diana", "Gómez","Azueta")); arraylist.add(new Trabajador(245, "Raul", "Benítez”, "Niss")); arraylist.add(new Trabajador(209, "Karla", "Ochoa", "Rodas")); Collections.sort(arraylist); for(Trabajador str: arraylist){ System.out.println(str); } } } Salida: [ nomina=209, name=Karla, apaterno=Ochoa, amaterno=Rodas ] [ nomina=223, name=Diana, apaterno=Gómez, amaterno=Azueta ] [ nomina=245, name=Raul, apaterno=Benítez, amaterno=Niss ]
  • 4. Comparable hizo nuestro trabajo, ¿por qué necesitamos a Comparator? Usando Comparable podemosordenarporunasolapropiedadque debeser de untipoentero.Con el fin de ordenar el ArrayList basado en múltiples propiedades podemos usar Comparator. Ordenandomultiplespropiedadesde ArrayList<Object> con Comparator Estamossobrescribiendoel método compare de Comparator para ordenar. import java.util.Comparator; public class Trabajador { private String nombreTrabajador; private String apPaternoTrabajador; private String apMaternoTrabajador; private int nomina; public Trabajador(int nomina, String nombreTrabajador, String apPaternoTrabajador, String apMaternoTrabajador) { this.nomina = nomina; this.nombreTrabajador = nombreTrabajador; this.apPaternoTrabajador = apPaternoTrabajador; this.apMaternoTrabajador = apMaternoTrabajador; } ... // los métodos getter y setter son los mismos que los del ejemplo anterior ... /*Comparator para ordenar la lista por nombre del trabajador*/ public static Comparator<Trabajador> nombreTrabajadorComparator = new Comparator<Trabajador>() { public int compare(Trabajador s1, Trabajador s2) { String nombreTrabajador1 = s1.getnombreTrabajador().toUpperCase(); String nombreTrabajador2 = s2.getnombreTrabajador().toUpperCase(); // orden ascendente return nombreTrabajador1.compareTo(nombreTrabajador2); // orden descendente //return nombreTrabajador2.compareTo(nombreTrabajador1); }}; /*Comparator para ordenar la lista por número de nómina*/ public static Comparator<Trabajador> nominaComparator = new Comparator<Trabajador>() { public int compare(Trabajador s1, Trabajador s2) { int nomina1 = s1.getNomina(); int nomina2 = s2.getNomina();
  • 5. /*Para orden ascendente*/ return nomina1-nomina2; /*Para orden descendente*/ //nomina2-nomina1; }}; @Override public String toString() { return "[ nomina=" + nomina + ", nombre=" + nombretrabajador + ", apaterno=" + apPaternoTrabajador + ", amaterno=" + apMaternoTrabajador + "]"; } } Clase Detalles: import java.util.*; public class Detalles { public static void main(String args[]){ ArrayList<Trabajador> arraylist = new ArrayList<Trabajador>(); arraylist.add(new Trabajador(101, "Zues", 26)); arraylist.add(new Trabajador(505, "Abey", 24)); arraylist.add(new Trabajador(809, "Vignesh", 32)); /*Ordenamiento basado en el Nombre del Trabajador*/ System.out.println("Ordenamiento por Nombre del Trabajador:"); Collections.sort(arraylist, Trabajador.nombreTrabajadorComparator); for(Trabajador str: arraylist){ System.out.println(str); } /* Ordenamiento basado en la propiedad nómina*/ System.out.println("Ordenamiento por nómina:"); Collections.sort(arraylist, Trabajador.nominaComparator); for(Trabajador str: arraylist){ System.out.println(str); } } } Salida: Ordenamiento por Nombre del Trabajador: [ nomina=223, name=Diana, apaterno=Gómez, amaterno=Azueta ] [ nomina=209, name=Karla, apaterno=Ochoa, amaterno=Rodas ] [ nomina=245, name=Raul, apaterno=Benítez, amaterno=Niss ] Ordenamiento por nómina: [ nomina=209, name=Karla, apaterno=Ochoa, amaterno=Rodas ] [ nomina=223, name=Diana, apaterno=Gómez, amaterno=Azueta ] [ nomina=245, name=Raul, apaterno=Benítez, amaterno=Niss ]