# HashTable sortieren



## scope2k3 (20. Mai 2007)

Hallo, 

ich habe einen HashTable, in der keys als String und values als Object enthalten sind. Ich lasse ihn wie folgt auslesen. Die Werte erscheinen jedoch vollkommen unsortiert. Wie kann ich nach meine Keys nach dem Alphabet sortieren. Hoffentlich könnt ihr mir helfen. Dankeschön.

Gruß, Tom


```
public class DataHandler {
    private DataStorage ds;
    private GUI gui;
    private InfoHandler ih;

    public DataHandler(DataStorage ds, GUI gui, InfoHandler ih) {
        this.ds = ds;
        this.gui = gui;
        this.ih = ih;
    }

    public void refreshData() {
        ih.getInfo();
        this.setData();
    }

    public void setData() {
        Enumeration<String> keys;
        Enumeration<Object> values;
        keys = ds.data.keys();
        values = ds.data.elements();

        while (keys.hasMoreElements()) {
            gui.createBranch(keys.nextElement(), values.nextElement());
        }
    }
}
```


```
public class DataStorage {
	public Hashtable<String, Object> data;

	public DataStorage() {
		data = new Hashtable<String, Object>();
	}

	public void save(String key, Object value) {
		data.put(key, value);
	}
}
```


----------



## Thomas Darimont (21. Mai 2007)

Hallo,

wenn du einen Key-Value Pair Container brauchst der die Key's sortieren soll, musst (solltest) du eine SortedMap Implementierung verwenden wie beispielsweise die TreeMap:

```
/**
 * 
 */
package de.tutorials;

import java.util.SortedMap;
import java.util.TreeMap;

/**
 * @author Tom
 * 
 */
public class SortedMapExample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        SortedMap<String, Integer> map = new TreeMap<String, Integer>();
        map.put("eeeeeee", 5);
        map.put("b", 2);
        map.put("cccc", 3);
        map.put("cccd", 4);
        map.put("a", 1);
        map.put("zzzzzzz", 6);
        
        for(String key : map.keySet()){
            System.out.printf("%s: %s\n",key,map.get(key));
        }
    }
}
```

Ausgabe:

```
a: 1
b: 2
cccc: 3
cccd: 4
eeeeeee: 5
zzzzzzz: 6
```

Du kannst der TreeMap auch einen spezifischen Comparator mitgeben der dann das Ordnen der einzelnen Keys übernimmt.

Gruß Tom


----------



## scope2k3 (21. Mai 2007)

Oh Danke! 

Werde das gleich mal versuchen zu implementieren. Sollte ja eigentlich kein Problem werden, 

Gruß, Tom


----------

