Que Peudo Hacer Para Ordenar Alfabéticamente Un Array List

lokoxtinena
17 de Febrero del 2010
Hola de nuevo tengo un problema con el tema de los arrayList, mi enunciado pide que implemente un ArrayList y que lo llene entrando datos por teclado los objetos que este contiene concretamente son estructuras Persona, las cuales tienen los atributos nombre apellido edad, hasta ahi ningun problema incluso he llegado a mostrar el contenido de dicho arrayList por pantalla sin problema alguno, el problema surge cuando en el enunciado me piden que el contenido de este arrayList debe ser mostrado por pantalla en orden alfabético, entonces el profesor ha comentado que podemos utilizar un método llamado TreeSet y, otro que se llama SortedSet, pero en el momento que quiero mostrarlo por pantalla, no hay cambio alguno, el contenido del arrayList sigue siendo mostrado en el mismo orden que sin el SortedSet y sin el TreeSet.

Entonces, despues de toda esta explicación, mi pregunta es:

¿Como puedo mostrar el contenido de mi arrayList por orden alfabético?

Gracias de antemano.

lokoxtinena
17 de Febrero del 2010
AYUDA POR FAVOR ES URGENTE!!!

Necesito HELP!!!

Plis os agradecería brevedad por favor, se que no está bien pedir tanto pero es que me es muy necesario saber como puedo hacer para mostrar el contenido del arrayList alfabéticamente por pantalla. Muchas gracias.

nicokiki
17 de Febrero del 2010
Hola!!!

Si queres ordenar un List (java.util.List es una interfaz...) tenes q hacer Collections.sort(tuList) ó Collections.sort(tuList, tuComparator).
Hace esto cuando crees tu lista:
List tuLista = new ArrayList();

Luego si queres usr la 1° opcion tu clase Persona debera implementar Comparable.
Si queres la 2° tenes q crear un Comparator para Persona

Salu2!!!!

lokoxtinena
17 de Febrero del 2010
Ok, eso lo entiendo pero lo que no comprendo como hacer es implementar la clase comparator, que debería hacer para que cuando yo ponga la sentencia

Collections.sort(List, Comparator)

Por Comparator el código que entiende, que es lo que este interpreta?? por que desde luego q el orden alfabético no, entonces lo que quiero saber es que es lo que he de implementar para que mi código muestre por pantalla el contenido de mi List ordenado pero pororden alfabético.

Muchas Gracias, dadme respuesta pronto por favor que lo necesito que he de entregar la practica.

Gracias de nuevo.

Pedro
17 de Febrero del 2010
Si tu lista es de Strings, haciendo Collections.sort(lista); te la ordena alfabeticamente.

lokoxtinena
17 de Febrero del 2010
No, mi lista no es de Strings es de Objetos Persona, pero he de ordenarlas por nombre alfabeticamente, y el nombre si que es un String, puedo acceder a ordenar la List utilizando solo el nombre?

juamurex
17 de Febrero del 2010
Si que puedes, lo único que tienes que hacer es que la clase Persona implemente la interfaz Comparable, con lo que tendrás que crear el método compareTo, aquí tienes un ejemplo:

public int compareTo(String nombre) {
if(this.nombre.compareTo(nombre) == 0)
return 0;
if(this.nombre.compareTo(nombre) < 0)
return -1;
return 1; //
}

juamurex
17 de Febrero del 2010
Si que puedes, lo único que tienes que hacer es que la clase Persona implemente la interfaz Comparable, con lo que tendrás que crear el método compareTo, aquí tienes un ejemplo: ejem ejem mejor así

public int compareTo(Object o) {
String nombre = (String)o;
if(this.nombre.compareTo(nombre) == 0)
return 0;
if(this.nombre.compareTo(nombre) < 0)
return -1;
return 1; //
}

lokoxtinena
17 de Febrero del 2010
Gracias Juamurex

juamurex
17 de Febrero del 2010
De nada ;)

si tienes alguna duda o quieres algún ejemplo mandame un mail a [email protected]

lokoxtinena
17 de Febrero del 2010
Hecho, te tomo la palabra. Merci Juamurex!!!!

nicokiki
17 de Febrero del 2010
Hola!!!

Este mensaje es una aclaracion personal.
Me parece q "lokoxtinena" esta equivocado en un par de cosas:
1-> Pide q se resuelva rapido su pedido
2-> Pide de nuevo ante una respuesta valida
Luego, "juamurex" se equivoca al darle "la" solucion. O sea, creo q no es la idea de un foro que te den lo q haya q hacer, sino q te ayude a resolver tu problema.
Para mi estaria bien dar codigo cuando sea insalvable o cuando sea mucho mas facil q explicarlo con palabras.
Q pasa cuando se da codigo asi porque si?
En este caso, quien pidio ayuda puede no haber entendido el tema y sin embargo consiguio lo q queria. Se q a veces es tentador dar el codigo y ya, pero en gral uno da codigo de cosas q le pasaron y se toma el tiempo de buscarlo en el lugar donde le paso... por q no mejor tomarse ese tiempo para explicarle los posibles caminos a seguir?

No es mala onda con nadie ni mucho menos, es mas, no paso nada malo hoy, pero es para futuro...
Les pego la respuesta q di y se las comento:

<mio>
Si queres ordenar un List (java.util.List es una interfaz...) tenes q hacer Collections.sort(tuList) ó Collections.sort(tuList, tuComparator).
Hace esto cuando crees tu lista:
List tuLista = new ArrayList();

Luego si queres usr la 1° opcion tu clase Persona debera implementar Comparable.
Si queres la 2° tenes q crear un Comparator para Persona
</mio>

Aclaraciones:
1-Meti codigo porque era mas facil q explicarlo... (List tuL...)
2- Di dos soluciones posibles (es mas, creo q no existen mas, salvo de maneras "caseras"...)

Ahora vemos q respondio


<deEl>
Ok, eso lo entiendo pero lo que no comprendo como hacer es implementar la clase comparator, que debería hacer para que cuando yo ponga la sentencia

Collections.sort(List, Comparator)

Por Comparator el código que entiende, que es lo que este interpreta?? por que desde luego q el orden alfabético no, entonces lo que quiero saber es que es lo que he de implementar para que mi código muestre por pantalla el contenido de mi List ordenado pero pororden alfabético.

Muchas Gracias, dadme respuesta pronto por favor que lo necesito que he de entregar la practica.
</deEl>

Como se ve, no entendio la respuesta y volvio a pedir. O sea, si no sabe lo q es un Comparator esta todo bien, pero se puede buscar. Si sigue sin entenderlo, puede optar por las mas facil q es hacer q Persona implemente Comparable, pero en su respuesta ni hace referencia a esa opcion q se la teminaron dando.... Eso es lo q critico.

Conclusion: si hay una respuesta (no importa de quien sea) y la respuesta es logica y sirve como solucion a lo pedido, no se deberian agregar mas respuestas salvo q se diga otra manera de hacerlo.. No se, me parece a mi q es incentivar la "vagancia" del otro y de NO incentivar el "autoaprendizaje y ganas de investigar"...
Es lo q me parece

Insisto q en este caso no paso nada, pero no seria logico q respondieramos dando la solucion sin q el otro no tenga q hacer nada... es lo q a mi me parece...

Salu2!!!!!!


jt
17 de Febrero del 2010
lee javier ceballo