# TreeMap<String,HashMap<String,String>>  sortieren



## ChantalM (7. Februar 2011)

Habe ein TreeMap, jedem Key als String ist ein HashMap<String,String> zugeordnet.

Unten im Beispiel sind drei HashMap<String,String> dem TreeMap hinzugefügt, in jedem HashMap<String,String> existiert die Kombination <"Stadt","Value">.

Ich will das TreeMap sortieren und zwar nach dem Value("Kiel","Aachen","München") für den Key "Stadt" vom HashMap<String,String>.
Wie geht das? 


```
TreeMap<String,HashMap<String,String>> treeMap=new TreeMap<String,HashMap<String,String>>();

HashMap<String,String> hm1=new HashMap<String,String>();
hm1.put("Stadt","Kiel");
hm1.put("Land","Schleswig-Holstein");
treeMap.put("tm1",hm1);

HashMap<String,String> hm2=new HashMap<String,String>();
hm2.put("Stadt","Aachen");
hm2.put("Land","Nordrhein-Westfalen");
treeMap.put("tm2",hm2);

HashMap<String,String> hm3=new HashMap<String,String>();
hm3.put("Stadt","München");
hm3.put("Land","Bayern");
treeMap.put("tm3",hm3);
```


----------



## genodeftest (7. Februar 2011)

du willst also den Namen als Key haben…
Die einige logische Sortierung wäre dann für mich:
TreeMap<Stadtname, Landname>
soweit richtig?
Oder ist dein Code-Beispiel erfunden?

wobei da die Frage ist, ob TreeMap die richtige Wahl ist…


----------



## ChantalM (7. Februar 2011)

Wollte die Values von Key "Stadt" vergleichen, um treemap zu sortieren.
Ich bekomme eine Exception:
Exception in thread "main" java.lang.StackOverflowError
	at java.util.TreeMap.get(Unknown Source)

bei Code:

```
public int compare(Object o1,Object o2){

int i=treeMap.get((String)o1).get("Stadt").compareTo(treeMap.get((String)o2).get("Stadt"));
			
return (0!=i) ? i : treeMap.get((String)o1).get("Stadt").compareTo(treeMap.get((String)o2).get("Stadt"));
}
```


----------



## HonniCilest (7. Februar 2011)

```
//****?
((String)o1).get("Stadt")
```

o1 und o2 sind in deinem Fall sicher HashMaps oder nicht?


----------



## Tomek_FFM (7. Februar 2011)

ChantalM hat gesagt.:


> Wollte die Values von Key "Stadt" vergleichen, um treemap zu sortieren.
> Ich bekomme eine Exception:
> Exception in thread "main" java.lang.StackOverflowError
> at java.util.TreeMap.get(Unknown Source)
> ...



Die Exception rührt daher, dass beim Aufruf von "treeMap.get(XXX)" intern wieder "compareTo" aufgerufen wird, was zu einer Endlosschleife führt. 
Die TreeMap ist eigentlich dazu ausgelegt nach den Keys sortiert zu werden.


----------

