views:

291

answers:

3

Just as the title says.

I tried messing around a bit with Collections.sort() on a List[] and the .sort() function of an ArrayList but I was never able to parse it back to an Enumeration.

Thanks!

EDIT:

Here's some pseduocode and further explanation. My goal is to take the keys() from a Hashtable and do complex operations involving each one, alphabetically.

My current process is:

  1. Take a hash table I'm given
  2. Form an enumeration from the ht
  3. Run a while loop until the enumeration is empty

So the code is like this:

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

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

     /*
      * DO COMPLEX PROCESS
      */
    }
}

The problem, is that the data in the enumeration has to be alphabetical (that is, the "complex process" must be done on each key in alphabetical order). Any solutions? Thanks!

+2  A: 

If you have a sorted list you can use

Collections.enumeration(myList)

to get it back to an enumeration... if I'm following you correctly..

EDIT:

You can do this...

List l = new ArrayList(ht.keySet());
Collections.sort(l)
danb
With my update in mind, I don't think there's a way to get the keys from the HT without using an Enumeration (the only HT method that really works is keys(), which returns an Enum)
Monster
You just missed the keySet() method... that'll give you something easier to work with... quick demo in my edited answer
danb
Great, thanks! I used yours (and KLE's for-loop) to go though each item.
Monster
List list = new ArrayList(htData.keySet()); Collections.sort(list); for(Object s : list) { System.out.println(s.toString()); }
Monster
+2  A: 

If you need to iterate over the items in order of their keys, maybe it's better to use a TreeMap instead of a Hashtable. Its keySet method will return the keys in order.

Thomas
Interesting. Unfortunately though, the Hashtable is a prereq.
Monster
In that case, use danb's solution.
Thomas
A: 

What about storing your keys in an ArrayList to sort them?

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