Nos puede resultar bastante útil obtener de forma ordenada alfabéticamente los datos que hemos introducido en una Hashtable, para ello este método al que le pasamos el objeto Hashtable, nos devolverá un array de Strings con las keys ordenadas.
[code lang=»java»]
private String[] keysOrdenadas(Hashtable ht) {
Object[] valores = ht.keySet().toArray();
ArrayList lista = new ArrayList();
for (int i = 0; i < valores.length; i++) {
lista.add((String) valores[i]);
}
Collections.sort(lista);
Object[] valores_ordenados = lista.toArray();
String[] indice = new String[valores_ordenados.length];
for (int i = 0; i < valores_ordenados.length; i++) {
indice[i] = (String) valores_ordenados[i];
}
return indice;
}
[/code]
Muy buen aporte Coler.
Sólo una preguntilla. El tipo de algoritmo que has puesto, ¿es un burbuja, quicksort, mergesort, …. cosecha propia?
Un saludo
Que tal gracias por el aporte, el ordenamiento realiza mediante esta linea:
Collections.sort(lista);
el ordenamiento de collections es una variacion del MergeSort puedes ver mas informacion en:
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html
Te propongo una mejora. Para pasar las claves al ArrayList te llegaría con esta línea:
ArrayList lista= new ArrayList(ht.keySet());
Un saludo
Y ¿cómo ordenamos alfabéticamente los elementos del hashtable sobre el mismo hashtable?