This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.ArrayList; | |
import java.util.Collections; | |
import java.util.Comparator; | |
import java.util.Date; | |
import java.util.List; | |
public class MainTest { | |
public static void main(String[] args) { | |
// TODO Auto-generated method stub | |
System.out.println("-----Ordenado cadenas de texto-----"); | |
List<String> nombres = new ArrayList<String>(); | |
nombres.add("Paco Perez"); | |
nombres.add("José Alvarado"); | |
nombres.add("Pepe Argeta"); | |
nombres.add("Ariel Anonitmo"); | |
nombres.add("Ariel Maldnoado"); | |
nombres.add("Zulma Estrada"); | |
//Si el arraylist es de objetos primitivos como, String, Integer, etc. | |
//basta con llamar al metodo sort. | |
Collections.sort(nombres); | |
for(String nombre : nombres){ | |
System.out.println(nombre); | |
} | |
List<Hijo> hijos = new ArrayList<Hijo>(); | |
hijos.add(new Hijo("Paco", "Perez", 20, new Date(11000))); | |
hijos.add(new Hijo("Pepe", "Argeta", 23, new Date(9000))); | |
hijos.add(new Hijo("Zulma", "Estrada", 18, new Date(10000))); | |
System.out.println("-----Ordenado por Fecha-----"); | |
Collections.sort(hijos, new Comparator<Hijo>(){ | |
@Override | |
public int compare(Hijo o1, Hijo o2) { | |
return o1.getFechaRegistro().compareTo(o2.getFechaRegistro()); | |
} | |
}); | |
for(Hijo hijo : hijos){ | |
System.out.println(hijo.getNombre()); | |
} | |
System.out.println("-----Ordenado por Edad-----"); | |
Collections.sort(hijos, new Comparator<Hijo>(){ | |
@Override | |
public int compare(Hijo o1, Hijo o2) { | |
return o1.getEdad().compareTo(o2.getEdad()); | |
} | |
}); | |
for(Hijo hijo : hijos){ | |
System.out.println(hijo.getNombre()); | |
} | |
} | |
} |
En la primera parte se puede observar que con objetos del tipo String al utilizar el método sort con un List nos permite ordenar alfabéticamente los elementos sin mucho problema.
Luego se observa la forma de ordenar por medio de atributos de un objeto. Primero se muestra ordenando el objeto Hijo por medio de fechas (que pueden ser de nacimiento, registro, etc.) y luego se ordena la lista por medio de la edad.
Aquí se puede observar la clase Hijo:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.Date; | |
public class Hijo { | |
private String nombre; | |
private String apellido; | |
private Integer edad; | |
private Date fechaRegistro; | |
private Hijo hijo; | |
public Hijo(String nombre, String apellido, Integer edad, Date fechaRegistro) { | |
this.nombre = nombre; | |
this.apellido = apellido; | |
this.edad = edad; | |
this.fechaRegistro = fechaRegistro; | |
} | |
public Hijo getHijo() { | |
return hijo; | |
} | |
public void setHijo(Hijo hijo) { | |
this.hijo = hijo; | |
} | |
public Integer getEdad() { | |
return edad; | |
} | |
public void setEdad(Integer edad) { | |
this.edad = edad; | |
} | |
public Hijo(String nombre, String apellido) { | |
this.nombre = nombre; | |
this.apellido = apellido; | |
} | |
public String getNombre() { | |
return nombre; | |
} | |
public void setNombre(String nombre) { | |
this.nombre = nombre; | |
} | |
public String getApellido() { | |
return apellido; | |
} | |
public void setApellido(String apellido) { | |
this.apellido = apellido; | |
} | |
public Date getFechaRegistro() { | |
return fechaRegistro; | |
} | |
public void setFechaRegistro(Date fechaRegistro) { | |
this.fechaRegistro = fechaRegistro; | |
} | |
} |
De esta forma se facilita mucho ordenar objetos por medio de uno de sus atributos.
Este comentario ha sido eliminado por el autor.
ResponderEliminary si es float, como se realizaria?
ResponderEliminarrubencarabias.primerob@gmail.com
gracias y un saludo!
Si utilizas un Float como objeto no debes realizar ningun cambio, pero si necesitas utilizar un float primitivo el comparador deber ir como se muestra a continuación:
EliminarCollections.sort(listaFloats, new Comparator(){
@Override
public int compare(float o1, float o2) {
if(o1 == o2){
return 0;
}
else if(o1 >= o2){
return 1;
}
else{
return -1;
}
}
});
ahora bien si se necesita ordenar la lista hijo por nombre como seria??
ResponderEliminarHola. En este caso dentro del método compare(Hijo o1, Hijo o2) se debería realizar la siguiente comparación o1.getNombre().compareTo(o2.getNombre());
EliminarHola, y si quiero ordenar por un campo BigDecimal,como sería?
ResponderEliminarcomo filtrarias el arreglo implementadonto un texedit tomando como ejmplo:
ResponderEliminarList hijos = new ArrayList();
hijos.add(new Hijo("Paco", "Perez", 20, new Date(11000)));
hijos.add(new Hijo("Pepe", "Argeta", 23, new Date(9000)));
hijos.add(new Hijo("Zulma", "Estrada", 18, new Date(10000)));
y en el texedit digito apellidos como "perez"
En ese caso no quieres ordenar pero obtener la lista filtrada. Puedes recorrer el array y luego obtener los valoresq ue te interesan. Por ejemplo:
EliminarList result = new ArrayList<>();
for (Hijo hijo : hijos) {
if (valorDelTextEdit.contains(hijo.getApellido())) {
result.add(hijo);
}
}
Result tendria los deseado.