Ordenar un Vector de forma alfabética con Java Marzo 25, 2009
Publicado por lineadecodigo en : Java , trackbackEl otro día veíamos cómo ordenar un vector de string con Java. Si bien, teníamos como limitante que el método sort de Collections realizaba una ordenación atendiendo a los caracteres ASCII.
Mediante este ejemplo veremos cómo ordenar un Vector de forma alfabética con Java. Para ello nos aprovecharemos de que el método sort tiene dos formas de llamarse.
En la primera, y ya utilizada, se le pasa la lista que contiene los elementos a ordenar:
public static <T extends Comparable<? super T>> void sort(List<T> list)
En la segunda, a parte de la lista de elementos, se le puede pasar una clase que sepa como ordenar dichos elementos y que por lo tanto los ordene a nuestro gusto. Atendiendo a nuestro ejemplo que los ordene de forma alfabética.
public static <T> void sort(List<T> list, Comparator<? super T> c)
La clase que tiene la lógica de ordenación será una clase del tipo Comparator. Y es que Comparator es un interface a implementar por la clase que contenga la ordenación.
El interface Comparator define dos métodos. Uno de los cuales es .compare(), el cual recibe dos objetos de la lista y decide cual es mayor de los dos.
Definamos nuestra clase de comparación:
class Comparador implements Comparator<String> { }
Como estamos ordenando un Vector de String, la clase que le pasamos al Template será String.
Volviendo al método .compare(), este deberá de devolver un valor negativo, cero o positivo. Atendiendo a las siguientes reglas:
- negativo, si el primer argumento es más pequeño que el segundo.
- cero, si los dos elementos son iguales.
- positivo, si el primer elemento es más grande que el segundo.
Como a nosotros nos interesa realizar una ordenación alfabética que no identifique mayúsculas y minúsculas, lo primero que haremos será convertir las dos cadenas a minúsculas mediante el método .toLoweCase().
s1.toLowerCase();
Y posteriormente utilizaremos el método .CompareTo de la clase String, el cual tiene el mismo comportamiento que el definido anteriormente para el método compare().
Así el código nos quedará de la siguiente forma:
class Comparador implements Comparator<String> { { return s1.toLowerCase().compareTo(s2.toLowerCase()); } }
Ahora solo nos quedará llamar desde la clase que realiza la ordenación al método sort, pasándolo el Vector y la clase que hace la comparación:
Vector<String> miVector = new Vector<String>(); miVector.add("Victor"); miVector.add("julio"); miVector.add("amaya");
Articulos Similares:
- Ordenar un Vector de String en Java
- Ordenando alfabéticamente con CASE_INSENSITIVE_ORDER
- Insertar elementos en un Vector
- Sumatorio de un numero de forma recursiva
- Insertar un elemento en una posición concreta del Vector
|- Reportar error en el código
|- Foro sobre Java Util
Enviar entrada por email
|
Imprimir
| 6832 visitas




Comentarios»
hola yo queria preguntar que si este codigo es util, para la hora de poder ordenar un determinado registro como una nomina que me este calculando n numeros de empleados ,lo q se desea ordenar es el numero de empleado ,en si este codigo me serviria para el oredenamiento de un registro!
gracias
EL METODO COMPARE EN GENERAL CUAL ES SU FUNCION.
Y EL METODO COMPARETO KE FUNCION GENERAL CUMPLE
hola, ¿alguien sabe cómo ordenar teniendo en cuenta dos criterios de ordenación? Por ejemplo si tenemos una lista de objetos y éstos con dos atributos (nombre, edad), que me ordene por nombre y si el el nombre es igual que lo haga por edad.
[...] el artículo sobre cómo ordenar un vector de forma alfabética con Java veíamos como implementar un comparador alfabético utilizando el interface [...]