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

ChantalM

Mitglied
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?

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

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.
 

Neue Beiträge

Zurück