Ver Mensaje Individual
  #5 (permalink)  
Antiguo 20/10/2014, 20:54
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Ordenar ArrayList

Hola,

Cita:
Iniciado por Xerelo Ver Mensaje
Teniendo en cuenta que esa List será de String, lo mejor que puedes hacer es crear un Comparator y llamar al método Collections.sort(List,Comparator) ...
Cita:
Iniciado por shenron66 Ver Mensaje
Gracias lo estube mirando pero no me sirve, porque el valor de los numeros es mas pequeño que el de las letras y no los ordena como quiero. ...
Me imagino que a lo que se refiere Xerelo es que tienes que implementar la interface Comparator, que por defecto al ser una interface, no define la implementación. En otras palabras, cual va primero lo defines tú. Y tu tienes que implementar la lógica, no basarte en la implementación básica de String.compareTo().

Posiblemente estás confundiendo Collections.sort(List) con Collections.sort(List, Comparator). Averigua como funciona la interface Comparator realmente.

Cita:
Iniciado por Andreslrz Ver Mensaje
Pues segun veo lo que debes hacer es primero separar la contraseña por caracteres y determinar como piensas ordenar, ya que si una contraseña empieza con una letra y otra con un caracter especial no puedes comparar el ascii con el UTF-16, en ese caso deberias escoger que iria primero, si el caracter especial o la letra o un numero. ...
Técnicamente, usando la interface Comparator no importa, es decir, Java usa Unicode internamente y nunca hace conversiones a ASCII u otra tabla de caracteres sino se especifica explícitamente. Así que todos los números, letras y caracteres definidos dentro de ASCII están dentro de Unicode, y como bien sabes cada uno de dichos glifos tiene un número asignado, un 'code point'.

Si comparo el caracter Unicode \u0001 (un caracter de control) con \u0041 (una letra), simplemente va a decir que el mayor es la letra puesto que su número es mas grande.

Para cambiar eso hay que implementar una interface Comparator<T> de tipo String que pase por cada letra del String y compare su valor con cada letra del otro String, haciendo los ajustes necesarios en la implementación para que los números vayan después de las letras (que no es la implementación normal de String.compareTo()).

Cita:
Iniciado por Andreslrz Ver Mensaje
Ya despues que escojas eso, es facil, solo escoges por orden de tipo de caracter para agrupar y ordenas con un algoritmo de ordenamiento, puede ser un bubble sort o un merge sort, despues repites lo mismo para los caracteres en la segunda posicion y asi sucesivamente, no tengo un algoritmo claro pero doy almenos la idea general.
El método estático sort() de la clase Collections tiene ya implementado el algoritmo más eficiente para ordenar cualquier colección. Lo único que tienes que hacer es insertarle la lógica de cual es mas grande y cual es mas pequeño con una interface Comparator.

Saludos,

Última edición por HackmanC; 20/10/2014 a las 21:00 Razón: agregar colección ...