HashTable sortieren

scope2k3

Grünschnabel
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

Code:
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());
        }
    }
}

Code:
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);
	}
}
 
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:
Java:
/**
 * 
 */
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:
Code:
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
 
Oh Danke!

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

Gruß, Tom
 
Zurück