# HashMap (Double,String) sortieren



## TheGreenDragon (22. April 2007)

Servus,
sagt mal wie stell ich das an, dass in meiner HashMap Double-Wert nach größe sortiert werden? Die sollen dann nämlich ausgeben werde also der Schlüssel (double) und der string. Habs vorher versucht alles in eine ArrayList zu packen die kann ich dann auch sortieren lassen [dank dieses Forums] aber das Problem ist dann, dass ich die Double-Werte dann nicht mehr den Strings zu ordnen kann.


----------



## zeja (22. April 2007)

Benutz einfach eine TreeMap statt einer HashMap. Eine TreeMap sortiert nach Keys und die Sortierung lässt sich mit Übergabe eines Konstruktors auch modifizieren.


----------



## TheGreenDragon (22. April 2007)

funktioniert das mit TreeMap genauso wie mit der HashMap?

hab mir nämlich folgendes überlegt:
Ich habe eine ArrayList in der ich die double-Werte eingefügt habe danach habe ich die Liste mit:

Collections.sort(zwischenWertListe);

sortieren lassen. Als nächstes habe ich dann die double-Werte mit den dazugehörigen Strings in meine HashMap eingefügt. Nun wollte ich mit diesem Code:

Iterator<Double> it = zwischenWertListe.iterator();
while(it.hasNext()) {
            double zahl = it.next();
            String formel = zwischenWertMap.get(zahl);
            System.out.println(formel + " " + it.next());
          }

die Werte aus der ArrayList die ja doch jetzt sortiert sein müsste als key für meine HashMap eingeben, die wiederum sollte dann den dazu gehörigen String ausspucken. Laut Compiler sollte auch alles gehen doch wenn ich das Prog dann starte dann gibt ne Fehlermeldung:

NoSuchElementException:
null (in java.util.AbstractList$Itr)


----------



## zeja (22. April 2007)

Die TreeMap funktioniert genauso wie eine HashMap beide Map implementieren (schau mal in das javadoc da sieht man das sehr schön)

Deine Versuche ergeben eine NullPointerException da du zweimal it.next() aufrufst und so bei  jedem Durchlauf schon zwei Elemente weiterspringst statt nur einem. So gehst du über das Ende der Liste hinaus.


----------



## TheGreenDragon (22. April 2007)

bor geil danke, hab net gewusst wenn zweimal da it.next() steht dass er dann weiter geht! aber danke jetzt läuft es!
bin nur irgendwie verwundert wieso er die Liste sortiert speichert. Überschreibt diese Methode / Klasse [weiss net was das ist] :

Collections.sort(zwischenWertListe);

meine Ursprüngliche ArrayList? Müsste ja eigentlich oder?


----------



## zeja (23. April 2007)

Tu dir selbst den gefallen und schau mal in die Doku rein: Javadoc. Es ist sehr wichtig zu lernen wie man mit der API umgeht um wirklich programmieren zu lernen.


----------



## TheGreenDragon (23. April 2007)

Jetzt hab ich mir die TreeMap schon drei mal durchgelesen und versteh immer noch bahnhof! liegt wohl an meinen englisch kenntnissen. :.(

habs ja jetzt mit der "Collections.sort(ArrayList)" Methode gemacht doch irgend wie stimmt da was net...

denn wenn zwei werte in meiner ArrayList den Wert null haben spuckt er mir später beim zugriff auf die HashMap nur einen richtigen Wert (Double) und den dazugehörigen String aus doch beim zweiten Wert kommt da nur noch in der Konsole  "null: 0.0" (ohne anführungszeichen) wobei das eher so "2^x : 0.0" (also erst String und dann der Double-Wert) aussehen müsste was ist da schief gelaufen?


----------



## zeja (25. April 2007)

Und wie willst du ordentlich programmieren ohne Englisch zu können? Da gehören schon grundlegende Englischkenntnisse hinzu die zumindest das verstehen der API ermöglichen.

Ansonsten lies es auf deutsch. Ist aber sicher veraltet:
java.util. deutsch

Deine zweite Frage habe ich nicht wirklich verstanden. Aber du weisst dass zu jedem Key in einer Map nur ein Wert vorhanden sein kann?


----------

