Bien en el tema en el que les mostré como listar el contenido de un directorio usando la clase file (
http://foro.cibernodo.net/tema-listar-co...clase-file ) pues veíamos que dicho listado no quedaba ordenado siguiendo ningún patrón y pues muchas veces necesitamos listar el contenido de manera Alfabética, pues así es mucho mas fácil para los usuarios de nuestra aplicación conseguir las cosas.
Pues bien, orita veremos como ordenar dicho contenido usando el campo CASE_INSENSITIVE_ORDER contenido dentro de la clase String, es una de las maneras mas sencillas de ordenar alfabéticamente. Bien sin mas aquí vamos.
Lo mas importante a resaltar es que también usaremos la clase Vector y ademas la clase Collections que es la que nos proporcionara el método Sort el cual usaremos para ordenar.
Primero que nada definimos nuestro Vector del tipo String, es como sigue:
Lenguaje JAVA
Vector<String> VectorUno = new Vector<String>();
Ahora tenemos que llenar nuestro vector con los valores que necesitamos, en este caso serán los nombres del listado de Archivos obtenidos (ya lo hablamos en el articulo que les mencione arriba), suponemos que nuestro arreglo de files es:
Lenguaje JAVA
File[] contenido = directorio.listFiles();
Entonces el vector lo llenamos con un ciclo sencillo ciclo for de la siguiente manera:
Lenguaje JAVA
for(int i = 0; i < contenido.length; i++) {
VectorUno.add(contenido[i].toString());
}
Después de esto tenemos nuestro Vector de String lleno (noten que por ser un vector de String tenemos que usar el método toString() de cada File, pues es necesaria la conversión para que no nos de error de tipo). A continuación lo ordenamos usando lo anteriormente nombrado, así:
Y listo, esto nos devolverá el VectorUno ordenado alfabéticamente, luego nos queda solo imprimir dicho Vector para corroborar visualmente que es así. Les dejare un método que hace esto, el método por supuesto es hecho por mi:
Lenguaje JAVA
protected static Vector<String> OrdenarVector(File[] f) {
Vector<String> VectorUno = new Vector<String>();
for(int i = 0; i < f.length; i++) {
VectorUno.add(f[i].toString());
}
Collections.sort(VectorUno, String.CASE_INSENSITIVE_ORDER);
return VectorUno;
}
Espero les sea de provecho. Saludos.
HTC Desire SLCD: S-OFF, cm7/r2 hboot, CyanogenMod Kernel, CyanogenMod NB 262
Samsung Galaxy S i9000: Chainfire Kernel (CF-ROOT), Value Pack ROM 2.3.6 JVU
SE Xperia x10i: Unlocked Bootloader, FXP052 Kernel, CyanogenMod 7.2.0 FXP052
Motorola Dext MB200: CyanogenMod 7.1 RC1
LG Optimus One P500: Stock ROM 2.3.3
ZTE Racer: Stock