HashMap sortieren

Status
Nicht offen für weitere Antworten.

Sebi84

Mitglied
Hi,

Ich habe eine HashMap angelegt. Die Key's der HastMap sind Namen. Nun soll die HashMap auf der konsole ausgegeben werden, und zwar so, das die Namen in Alphabetischer Reihenfolge sind.

Code:
HashMap Telefonbuch = new HashMap();
TreeSet s = new TreeSet();
...


Code:
...
public void sortieren()
    {
          Iterator it = Telefonbuch.entrySet().iterator();
          while(it.hasNext()){
          Map.Entry entry = (Map.Entry)it.next();
          s.add(((Eintrag)(entry.getValue())).getNachname());
          }
          Iterator iterator = s.iterator();
          while (iterator.hasNext()) {
          System.out.println((String)iterator.next());
          }
          
    }

Mit dieser Methode habe ich erstmal versuch, die Keys zu sortieren. Leider hat das nicht geklppt. Wo liegt mein fehler?
Ich dachte, wenn ich die Namen, also die Keys einmal sortiert habe, kann ich die dann in der passenden Reihenfolge aus der HashMAp holen und ausgeben.

Gruß,Sebi
 

Marco13

Top Contributor
Hm. Nimm eine TreeMap. Die ist von vornherein nach den Keys sortiert.

EDIT: Ach, da kommt ja schon eine TreeMap vor :shock: Sorry. Aber was genau du damit machst, ist nicht ganz klar: Eine TreeMap hat keine "add"-Methode ???:L
 

The_S

Top Contributor
Code:
	public void printHashMapSorted(HashMap<String, String> map) {
		
		Vector<String> vec = new Vector<String>(map.keySet());
		Collections.sort(vec);
		for (String str : vec) {
			System.out.println(str + " - " + map.get(str));
		}
	}
 

Sebi84

Mitglied
Hi,
Danke für die schnelle Hilfe, aber ich versteh das leider nicht. Funktionieren tuts auch nicht. Ich übergebe der Funktion public void printHashMapSorted(HashMap<String, String> map)
meine HashMap Telefonbuch. Dabei gibt es aber immer einen fehler. Das liegt wohl daran, das der Key ein String ist, aber der Value ein Objekt.

Da läuft dann was falsch.
 

The_S

Top Contributor
naja, dann verändere halt die value der methode auf objekt ... und die Ausgabe muss dann wohl dementsprechend auch angepasst werden. Soviel Transferleistung hatte ich eigentlich erwartet :roll:
 

Sebi84

Mitglied
Also ich hab das mal so gemacht. Wenn ich diese Funktion mit Telefonbuch aufrufe, bekomme ich einen Fehler. Was mache ich falsch?


Code:
public void printHashMapSorted(HashMap<String, Object> map) {
      
      Vector<String> vec = new Vector<String>(map.keySet());
      Collections.sort(vec);
      for (String str : vec) {
         System.out.println(str + " - " + map.get(str));
      }
   }
 

Sebi84

Mitglied
Ich arbeite momentan mit BlueJ.
Der gibt mir als Fehlermeldung Error: Can not find symbol...
Aber Telefonbuch ist da!
 

Leroy42

Top Contributor
Sebi84 hat gesagt.:
Ich arbeite momentan mit BlueJ.
Der gibt mir als Fehlermeldung Error: Can not find symbol...
Aber Telefonbuch ist da!

- Welches Symbol findet er nicht?
- In welcher Zeile ist der Fehler?
- Wie sieht der Source-Code in der Umgebung des Fehlers aus?

Sorry, aber meine Kristallkugel ist g'rad in Urlaub. :(
 

Sebi84

Mitglied
Der Fehler tritt während der Laufzeit des Programms auf. Ich kann ja bei BlueJ den Übergabewert für die Methode wärend der Laufzeit an geben. Da gebe ich dann Telefonbuch ein. Dabei entsteht dann der fehler.


Code:
import java.util.*;


public class Telefonbuch
{ 
    HashMap Telefonbuch = new HashMap();
    TreeMap s = new TreeMap();
    
    public Telefonbuch() //Konstruktor
    {  }
    
    public Telefonbuch(String nachname) //Konstruktor
    {
        Eintrag eintrag = new Eintrag();
        eintrag.setNachname(nachname);
        
        Telefonbuch.put(nachname,eintrag);
        
    }
    
    
    public void eintragen(String nachname, String vorname, String nummer)
    {
      Eintrag eintrag = new Eintrag(); //Neues Eintrag Objekt erzeugen
      
      eintrag.setVorname(vorname);  //Vorname im Objekt setzen
      eintrag.setNachname(nachname);
      eintrag.setNummer(nummer);
      
      Telefonbuch.put(nachname,eintrag);
      
    }
    
    public void löscheEintrag(String nachname)
    {
       Telefonbuch.remove(nachname);    
    }
    
    public String getTelefonNummer(String nachname)
    {
        return ((Eintrag)(Telefonbuch.get(nachname))).getNummer();   
    }
    
    public void showList()
    {   System.out.println("Nachname    Vorname     Tel.Nr.     \n");
        Iterator it = Telefonbuch.entrySet().iterator();
        while(it.hasNext()){
            Map.Entry entry = (Map.Entry)it.next();
            System.out.println(((Eintrag)(entry.getValue())).getNachname() + "   " +((Eintrag)(entry.getValue())).getVorname() +"     " +((Eintrag)(entry.getValue())).getNummer());
        }
        System.out.println("\n");
    }

    
    public void printHashMapSorted(HashMap<String, Object> map) {
      
      Vector<String> vec = new Vector<String>(map.keySet());
      Collections.sort(vec);
      for (String str : vec) {
         System.out.println(str + " - " + map.get(str));
      }
   }
    
}
 
S

SlaterB

Gast
in einer Klasse TelefonBuch
eine Exemplarvariable TelefonBuch zu nennen
ist schon ausgesucht dämlich
das verwirrt doch total,

zudem alle Variablen klein schreiben..

und warum bei
public void printHashMapSorted(HashMap<String, Object> map) {
}
überhaupt eine HashMap als Parameter übergeben?
das Objekt kennt doch seine eigene Exemplarvariable
 

Marco13

Top Contributor
Eine TreeMap wäre übrigens automatisch sortiert.

Und wenn man sich ein Kleines, selbstständiges, compilierbares Beispiel bastelt, sieht man, (wie so oft, in solchen Fällen) dass es funktioniert.

Code:
import java.util.*;

class Eintrag
{
	String vorname;
	String nachname;
	String nummer;

public String getVorname()
{
	return vorname;
}
public void setVorname(String vorname)
{
	this.vorname = vorname;
}

public String getNachname()
{
	return nachname;
}
public void setNachname(String nachname)
{
	this.nachname = nachname;
}

public String getNummer()
{
	return nummer;
}
public void setNummer(String nummer)
{
	this.nummer = nummer;
}

public String toString()
{
	return vorname + " "+nachname+" "+nummer;
}

}


public class Telefonbuch
{
	public static void main(String args[])
	{
		Telefonbuch t = new Telefonbuch("heah?");
		t.eintragen("CCC", "xxx", "123");
		t.eintragen("AAA", "yyy", "234");
		t.eintragen("BBB", "zzz", "345");

		t.printHashMapSorted(t.Telefonbuch);
	}


    HashMap Telefonbuch = new HashMap();
    TreeMap s = new TreeMap();

    public Telefonbuch() //Konstruktor
    {  }

    public Telefonbuch(String nachname) //Konstruktor
    {
        Eintrag eintrag = new Eintrag();
        eintrag.setNachname(nachname);

        Telefonbuch.put(nachname,eintrag);
    }


    public void eintragen(String nachname, String vorname, String nummer)
    {
      Eintrag eintrag = new Eintrag(); //Neues Eintrag Objekt erzeugen

      eintrag.setVorname(vorname);  //Vorname im Objekt setzen
      eintrag.setNachname(nachname);
      eintrag.setNummer(nummer);

      Telefonbuch.put(nachname,eintrag);

    }

    public void löscheEintrag(String nachname)
    {
       Telefonbuch.remove(nachname);
    }

    public String getTelefonNummer(String nachname)
    {
        return ((Eintrag)(Telefonbuch.get(nachname))).getNummer();
    }

    public void showList()
    {   System.out.println("Nachname    Vorname     Tel.Nr.     \n");
        Iterator it = Telefonbuch.entrySet().iterator();
        while(it.hasNext()){
            Map.Entry entry = (Map.Entry)it.next();
            System.out.println(((Eintrag)(entry.getValue())).getNachname() + "   " +((Eintrag)(entry.getValue())).getVorname() +"     " +((Eintrag)(entry.getValue())).getNummer());
        }
        System.out.println("\n");
    }


    public void printHashMapSorted(HashMap<String, Object> map) {

      Vector<String> vec = new Vector<String>(map.keySet());
      Collections.sort(vec);
      for (String str : vec) {
         System.out.println(str + " - " + map.get(str));
      }
   }

}

Eine TreeMap wäre übrigens automatisch sortiert.
 

The_S

Top Contributor
TreeMaps sind toll ... die sind so ... "automatisch sortiert ..." :shock:

*drogen wieder wegpackt*
 

Marco13

Top Contributor
Das war Absicht, weil es (auch vor diesem Post) schon 3 mal erwähnt wurde (und es auch das erste war, was ich gesagt hatte), er aber darauf (warum auch immer) nicht eingegangen ist.

@Sebi84: Du könntest eine TreeMap verwenden :lol:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
rafi072001 Sortieren einer HashMap nach Values Java Basics - Anfänger-Themen 2
B HashMap alphabetisch sortieren Java Basics - Anfänger-Themen 2
F HashMap sortieren <String, Long> Java Basics - Anfänger-Themen 3
I HashMap sortieren Java Basics - Anfänger-Themen 10
G (Linked)HashMap sortieren Java Basics - Anfänger-Themen 1
S HashMap mehrere Keys zu einem Value Java Basics - Anfänger-Themen 3
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
T HashMap Lsite gibt die sachen nicht aus wie gewollt. Java Basics - Anfänger-Themen 3
krgewb HashMap Java Basics - Anfänger-Themen 2
B Hashmap richtig bauen, die Tripel auf Zahl abbildet? Java Basics - Anfänger-Themen 10
"java.util.HashMap.get(Object)" is null Java Basics - Anfänger-Themen 10
berserkerdq2 Hashmap, wie prüfe ich ob ein Key schon existiert Java Basics - Anfänger-Themen 19
S Durch HashMap iterieren Java Basics - Anfänger-Themen 8
F gson mit einer Hashmap Java Basics - Anfänger-Themen 2
J JSON-HashMap Java Basics - Anfänger-Themen 3
J Hashmap Java Basics - Anfänger-Themen 13
C Hashmap zickt Java Basics - Anfänger-Themen 9
S HashMap contains() Methode Java Basics - Anfänger-Themen 1
Z Satz aufteilen und die Wörter zählen (HashMap) Java Basics - Anfänger-Themen 15
N enum Attribut von Objekten einer Hashmap ausgeben Java Basics - Anfänger-Themen 6
P Verschachtelte Hashmap Java Basics - Anfänger-Themen 6
I Sortiert eine HashMap nicht gleich wie eine ArrayList? Java Basics - Anfänger-Themen 1
J HashMap Java Basics - Anfänger-Themen 6
M Enum-Variable HashMap zuweisen Java Basics - Anfänger-Themen 5
U Hashmap Iterator selbst implementieren Java Basics - Anfänger-Themen 10
N HashMap in List good practice? Java Basics - Anfänger-Themen 2
K Value eines HashMaps in einer HashMap wiedergeben. Java Basics - Anfänger-Themen 5
O Hashmap, ArrayList, LinkedList Java Basics - Anfänger-Themen 7
O HashMap - ArrayList Java Basics - Anfänger-Themen 29
J Hashmap langsamer als compareTo? Java Basics - Anfänger-Themen 23
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
J Erhöhen eines Values als Integer bei gleichen Keys in HashMap Java Basics - Anfänger-Themen 12
N Methoden HashMap interne Werte miteinander vergleichen Java Basics - Anfänger-Themen 7
W The type Long is not visible HashMap Java Basics - Anfänger-Themen 4
M Objekt mit Hashmap vergleichen Java Basics - Anfänger-Themen 22
S Gibt es für die Klasse HashMap Generic Implementierungen? Java Basics - Anfänger-Themen 11
C HashMap - alle keys haben values der letzten put-Anweisung Java Basics - Anfänger-Themen 3
J Hashmap auslesen Java Basics - Anfänger-Themen 7
GreenTeaYT HashMap dupliziert meine Elemente? Java Basics - Anfänger-Themen 2
shiroX Methoden Morse-Code Übersetzer mit HashMap Java Basics - Anfänger-Themen 5
E HashMap Problem Java Basics - Anfänger-Themen 5
P Hashmap anstatt LinkedList? Java Basics - Anfänger-Themen 6
T HashMap und die Methoden Java Basics - Anfänger-Themen 13
N Methoden Interaktives PDF mit HashMap befüllen Java Basics - Anfänger-Themen 0
Z Hashmap auseinandernehmen und analysieren Java Basics - Anfänger-Themen 7
B Durchlaufen von Hashmap und Arraylist Java Basics - Anfänger-Themen 8
F HashMap oder welches Array? Java Basics - Anfänger-Themen 4
T HashMap Java Basics - Anfänger-Themen 24
L Hashmap mit variablem Key Java Basics - Anfänger-Themen 9
M Collections Probleme mit Hashmap Java Basics - Anfänger-Themen 4
N Collections String in HashMap umwandeln Java Basics - Anfänger-Themen 3
Z HashMap richtig benutzen Java Basics - Anfänger-Themen 2
lgund HashMap // TS3 Query Java Basics - Anfänger-Themen 7
Z Hashmap Iterator löscht nicht Java Basics - Anfänger-Themen 8
E Hashmap Wert auslesen Java Basics - Anfänger-Themen 2
S Printstream für einen Hashmap Loop Java Basics - Anfänger-Themen 1
dat_vin OOP Hashmap und Attribute Java Basics - Anfänger-Themen 7
C Check ob eine HashMap schon existiert Java Basics - Anfänger-Themen 16
P Vererbung Eigene HashMap Variante Java Basics - Anfänger-Themen 2
R Hashmap in anderer Klasse nicht benutzbar Java Basics - Anfänger-Themen 1
T Java Hashmap Java Basics - Anfänger-Themen 3
L Gibt es etwas wie "HashMap <String, String, String> Java Basics - Anfänger-Themen 9
K HashMap mit Daten aus ArrayList befüllen Java Basics - Anfänger-Themen 14
S OOP Klasse mit static-Eigenschaften - HashMap füllen Java Basics - Anfänger-Themen 6
O HashMap Fragen Java Basics - Anfänger-Themen 8
T HashMap Werte einfügen, durchsuchen und auslesen Java Basics - Anfänger-Themen 17
M Semantisches Problem HashMap/Netzwerk Java Basics - Anfänger-Themen 4
D HashMap Keys durchlaufen Java Basics - Anfänger-Themen 2
B Zugriff auf csv-Datei per hashmap Java Basics - Anfänger-Themen 5
M HashMap keys ausgeben Java Basics - Anfänger-Themen 2
S In einer Hashmap Klassen regestrieren Java Basics - Anfänger-Themen 2
H Collections Was ist schneller - HashMap + Sort v TreeMap? Java Basics - Anfänger-Themen 75
F HashMap nach kleinstem Value durchsuchen Java Basics - Anfänger-Themen 11
G HashMap Java Basics - Anfänger-Themen 6
F Wortpaare - HashMap - ArrayList Java Basics - Anfänger-Themen 6
M HashMap Frage Java Basics - Anfänger-Themen 3
M HashMap - put() reagiert nicht? Java Basics - Anfänger-Themen 8
N Cast eines Objektes in eine Hashmap Java Basics - Anfänger-Themen 13
A CSV Zeilenweise einlesen und in einer HashMap speichern Java Basics - Anfänger-Themen 12
A Input/Output Hashmap in einem JPanel via JList anzeigen Java Basics - Anfänger-Themen 8
K HashMap auf leere Key-Value-Paare prüfen Java Basics - Anfänger-Themen 14
F Hilfe bei der HashMap. Java Basics - Anfänger-Themen 3
F HashMap vs. TreeMap Java Basics - Anfänger-Themen 5
B HashMap Java Basics - Anfänger-Themen 9
C Collections String[] als value in HashMap Java Basics - Anfänger-Themen 6
V Hashmap Iterieren Java Basics - Anfänger-Themen 4
C Csv File in Hashmap ausgeben Java Basics - Anfänger-Themen 14
T HashMap<String,Object> Werte auslesen Java Basics - Anfänger-Themen 5
I HashMap Java Basics - Anfänger-Themen 11
H Collections Brauche modifizierte HashMap Java Basics - Anfänger-Themen 6
H TreeMap/HashMap synchronisieren Java Basics - Anfänger-Themen 2
A Datentypen Hashmap to Array Java Basics - Anfänger-Themen 11
D HashMap überschreibt Werte Java Basics - Anfänger-Themen 7
pg1337 Interface Comparable-Interface bei HashMap Java Basics - Anfänger-Themen 21
D erweiterte hashmap Java Basics - Anfänger-Themen 5
H HashMap<Int, String> - Er findet die Int-Klasse nicht. Java Basics - Anfänger-Themen 3
L HashMap zu JList Java Basics - Anfänger-Themen 6
S Erste Schritte HashMap Kurze Frage - Werte über Schleife ausgeben Java Basics - Anfänger-Themen 30
F Collections ArrayList oder Hashmap mittel Collections.sychronised Java Basics - Anfänger-Themen 6
B Klassen HashMap Zwei Objekte, gleicher Key Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben