2009-09-30 7 views
2

Tout comme le titre l'indique.Existe-t-il un moyen simple d'alphabétiser une énumération de chaînes en Java?

J'ai essayé de jouer un peu avec Collections.sort() sur une List [] et la fonction .sort() d'une ArrayList mais je n'ai jamais été capable de l'analyser de nouveau en une énumération.

Merci!

EDIT:

Voici quelques pseduocode et explications. Mon but est de prendre les clés() d'une table de hachage et de faire des opérations complexes impliquant chacune d'elles, par ordre alphabétique.

Mon processus actuel est:

  1. Prenez une table de hachage Je me donne
  2. Formez une énumération du ht
  3. Exécuter un certain temps boucle jusqu'à ce que l'énumération est vide

Donc le code est comme ceci:

public void processData(Hashtable<String,GenericClass> htData) 
{ 
    Enumeration<String> enData = htData.keys(); 

    while(enData.hasMoreElements()) 
    { 
     String current = enData.nextElement(); 

     /* 
     * DO COMPLEX PROCESS 
     */ 
    } 
} 

Le problème, c'est que les données de l'énumération doivent être alphabétiques (c'est-à-dire que le "processus complexe" doit être fait sur chaque clé dans l'ordre alphabétique). Des solutions? Merci!

+1

Err, Collections.sort() prend une liste en tant que paramètre, pas une liste []. Et ArrayList n'a pas de méthode sort(). Vous pourriez reformuler votre question. –

+0

peut-être poster un pseudo code ou quelque chose pour plus de clarté ... – danb

+0

Désolé. Juste mis à jour le PO. – Monster

Répondre

4

Si vous avez une liste triée, vous pouvez utiliser

Collections.enumeration (myList)

pour le récupérer à une énumération ... si je vous suit correctement ..

EDIT:

vous pouvez le faire ...

List l = new ArrayList(ht.keySet()); 
Collections.sort(l) 
+0

Avec ma mise à jour, je ne pense pas qu'il existe un moyen d'obtenir les clés du HT sans utiliser d'énumération (la seule méthode HT qui fonctionne vraiment est keys(), qui retourne un Enum) – Monster

+0

Vous venez de manquer le keySet() méthode ... qui vous donnera quelque chose de plus facile à travailler avec ... démo rapide dans ma réponse éditée – danb

+0

Super, merci! J'ai utilisé le vôtre (et le for-loop de KLE) pour aller à chaque article. – Monster

2

Si vous devez itérer sur les éléments dans l'ordre de leurs clés, il est peut-être préférable d'utiliser un TreeMap au lieu d'un Hashtable. Sa méthode keySet va retourner les clés dans l'ordre.

+0

Intéressant. Malheureusement, le Hashtable est un prérequis. – Monster

+0

Dans ce cas, utilisez la solution de Danb. – Thomas

0

Qu'en est-il du stockage de vos clés dans une ArrayList pour les trier?

List<String> list = // create from htData.keys() 
    Collections.sort(list); 
    for(String s : list) { 
    ... 
0

devrait fonctionner:

Enumeration<String> enumeration = dictionary.keys(); // unsorted enumeration   
List list= Collections.list(enumeration); // create list from enumeration 
Collections.sort(list); 
enumeration = Collections.enumeration(list); 
Questions connexes