Objekte in einer Hashtable am einfachsten sortieren

Status
Nicht offen für weitere Antworten.
H

hanserl

Gast
Hallo zusammen,

ich hab ein Problem mit einer Hashtable und den Objekten die darin gespeichert sind.

Die Hashtable sieht so aus.
htStudentContainer = (String ID, Student oStudent)

Jeder Student ist in einem bestimmten Semester --> Bsp: Student.m_szSemester

Nun soll die Ausgabe aller Studenten nach Semester sortiert ausgegeben werden.

Die Frage is nun wie kann ich die Studenten in der Hashtable so sortieren dass sie bei der Ausgabe nach Semester ausgegeben werden.

Hoffe jemand weiss Rat.

Vielen Dank und Grüsse
 

m@nu

Bekanntes Mitglied
eine hashtable an sich kannst du nicht sortieren (wenn ich mich nicht täusche)

wenn du die daten sortieren musst, empfehle ich dir z.b. eine ArrayList. dies bedeutet dann aber, dass du die id ebenfalls in der Student-klasse speichern musst.
zusätzlich kannst du im Student das Comparable-interface implementieren. (google hilft da gerne weiter)
anschliessend kannst du mit Collections.sort(List) deine liste sortieren.

<edit>
hm, da warst du wohl schneller ;)
das mit dem entryset hab ich nicht gewusst... in dem fall doch keine arraylist :bae:
</edit>
 

Der Müde Joe

Top Contributor
ein kleines Beispiel

Code:
Collections.sort(hashtable.keySet(), new Comparator<Student>(){
public int compare(Student s1 , Student s2){
//.....compare
}
});
 

Der Müde Joe

Top Contributor
yep

dann über das set iterieren....pronto

EDIT:
das Set sollte nat. nicht so benutzt werden..
sondern Set ks = hs.keySet()....
 
H

hanserl

Gast
Danke für die schnellen Antworten erstmal.

Also die ID auch direkt im Student - Objekt zu speichern ist kein Problem.
Das werd ich dann erstmal machen.


Wenn ich den müden Joe richtig verstehe dann kann man in die Hashtable nach den keys sortieren.
Das würde ja heissen dass die Sortierung unter Umständen ja auch mit Hashtable geht.

Egal...
Auf jeden Fall werd ichs mit der ArrayList versuchen - oder doch nicht?
Ich suche nach der elegantesten Lösung...

Danke und Grüsse
 
G

Guest

Gast
Wenn Du eine Hashtable mit sortierten Schuesseln willst, kannst Du einfach eine TreeMap verwenden.
Wenn die Sortierung von den values abhaengt, musst du wohl oder uebel immmer die values() Collection der Map in eine Liste packen und sortieren.
 

Der Müde Joe

Top Contributor
Code:
Set ks = hs.keySet();

Collections.sort( /*siehe oben*/);

//iterier über Set mit geordneten IDs
Student s = ht.get(ks.next());

Die Hashtable ist nicht geordnet, aber die keys.
anhand der geordneten Keys kommst du auch an die Studis
 

m@nu

Bekanntes Mitglied
ich persönlich habe solche sachen bis anhin mit ArrayLists gelöst. der nachteil dort ist halt, dass wenn man anhand eines schlüssels auf ein element zugreifen will, per for-schleife alles abgrasen muss, bis der entsprechende eintrag gefunden wurde.

die variante vom müden joe habe ich bis jetzt nicht gekannt. wird bei der nächsten gelegenheit sowas mal ausprobieren.

welche variante ist eleganter? kA ;) muss schlussendlich jeder für sich entscheiden denk' ich. "meine" variante per arraylist wird jenachdem einfach recht langsam bei steigenden datenbeständen schätz' ich mal
 
G

Guest

Gast
Collections.sort() geht nur mit Listen nicht mit Sets.

Code:
List<Student> studenten = new ArrayList(map.values());
Collections.sort(studenten, new Comparator() {
public int compare(Student o1, Student o2)
{
    return o2.m_szSemester - o1.m_szSemester;
}
});
 
B

bygones

Gast
ueberseht nicht den Beitrag von Gast... einfach eine TreeMap nutzen wenn es per default sortiert werden soll !
 
H

hanserl

Gast
Danke für eure Hilfe.

Das Problem habe ich folgendermassen gelöst.
Funktioniert wunderbar....


Code:
//sortiere die Liste  mit dem Studenten (htIndisUnsorted) nach Generation
    List<Student> al_Students = new ArrayList( htIndisUnsorted.values() ); //nur ht auf List - sort geht nicht über ht
    Collections.sort( al_Students, new Comparator<Student>()
    {
      public int compare( Student indi_1, Student indi_2 )
      {
        int i1_generation = Integer.parseInt(indi_1.getM_szGeneration());
        int i2_generation = Integer.parseInt(indi_2.getM_szGeneration());   
        
        if (i1_generation < i2_generation) 
        {
          return -1;
        }
        if (i1_generation > i2_generation) 
        {
          return 1;
        }        
        return 0; //values sind gleich
      }
    } );


 System.out.println("--------------------------------- Sorted Indiviudals -------------------------------");
    for (int x = 0; x < al_Students .size(); x++)
    {
      Individual i = al_Individuals.get(x);
      System.out.println( "Generation: " + i.getM_szGeneration() );
    }
 
B

bygones

Gast
liste geht natuerlich auch, nur damit verlierst du den direkten zugriff auf ein element anhand eines eindeutigen schluessels....
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
N Typebound Objekte einer Arraylist hinzufügen Java Basics - Anfänger-Themen 7
U Objekte in einer LinkedList sortieren Java Basics - Anfänger-Themen 5
N Methode um Objekte einer Liste hinzuzufügen Java Basics - Anfänger-Themen 1
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
C Verschiedene Objekte in einer Liste speichern Java Basics - Anfänger-Themen 6
H Auf Objekte bzw Variabeln aus einer anderen Methode zugreifen Java Basics - Anfänger-Themen 7
K Boolean in einer Methode um 2 Objekte zu vergleichen Java Basics - Anfänger-Themen 12
X Objekte einer ArrayList richtig ausgeben? Java Basics - Anfänger-Themen 8
V Collections Objekte einer ArrayList in der main() ausgeben Java Basics - Anfänger-Themen 9
M Objekte mit einer Schleife mehrmals erzeugen Java Basics - Anfänger-Themen 17
J Array Objekte einer Klasse zuordnen Java Basics - Anfänger-Themen 15
F Alle Objekte einer Klasse nach Eigenschaft durchsuchen Java Basics - Anfänger-Themen 8
BobbGott Klassen 2 "Objekte" in einer Methode - wie? Java Basics - Anfänger-Themen 7
J Objekte in einer Liste Java Basics - Anfänger-Themen 3
Z OOP Objekte einer Klasse weiteren Klassen zur Verfügung stellen Java Basics - Anfänger-Themen 17
A Objekte einer ArrayList auslesen und auf der Konsole ausgeben Java Basics - Anfänger-Themen 2
M Von einer Klasse aus, Objekte einer anderen Klasse verändern. Java Basics - Anfänger-Themen 2
F Objekte einer Klasse verwalten Java Basics - Anfänger-Themen 10
M Erste Schritte mehrere Objekte aus einer Klasse Java Basics - Anfänger-Themen 4
B OOP Objekte erzeugen mit Hilfe einer for Schleife Java Basics - Anfänger-Themen 29
F Adressverwaltungsprogramm: Objekte einer Klasse in Array Java Basics - Anfänger-Themen 6
M Input/Output Objekte in einer Textdatei ablegen (Highscore) Java Basics - Anfänger-Themen 9
C Methoden Objekte mit Hilfe einer Schleife in einer ArrayList erzeugen Java Basics - Anfänger-Themen 26
C Mehrere Objekte mit einer Methode ausgeben Java Basics - Anfänger-Themen 17
S OOP Foreach für Objekte einer Klasse? Java Basics - Anfänger-Themen 3
S Mehrere Objekte einer Klasse automatisch erzeugen Java Basics - Anfänger-Themen 15
B Objekte aus einer anderen Klasse(in der sich weitere Klassen befinden) erzeugen Java Basics - Anfänger-Themen 24
I Bestimmte Objekte einer Liste hinzufügen Java Basics - Anfänger-Themen 16
F Aller Objekte einer Klasse Java Basics - Anfänger-Themen 9
D Erste Schritte Viele Objekte einer Klasse "verwalten" Java Basics - Anfänger-Themen 17
J Klassen Objekte einer Klasse Java Basics - Anfänger-Themen 13
X Collections Reihenfolge bestimmter Objekte in einer ArrayList verändern Java Basics - Anfänger-Themen 2
I OOP Objekte in einer ArrayList Java Basics - Anfänger-Themen 5
K in Konstruktor neue Objekte einer anderen Klasse erzeugen Java Basics - Anfänger-Themen 9
W Objekte in einer Array sortieren Java Basics - Anfänger-Themen 3
O Ungleiche Objekte in einer Schleife erstellen Java Basics - Anfänger-Themen 3
T OOP Objekte einer Klasse mit schleife auslesen Java Basics - Anfänger-Themen 7
I Objekte einer Liste einer weiteren List anhängen Java Basics - Anfänger-Themen 8
L Mehrere Objekte einer Klasse aber nur einmal Konstruktor aufruf? Java Basics - Anfänger-Themen 2
D Wie Objekte einer Unterklasse erstellen? Java Basics - Anfänger-Themen 14
S OOP kann ich von einer Klasse aus auf andere Objekte zugreifen? Java Basics - Anfänger-Themen 7
Semox Sind Objekte in einer ArrayList überschreibbar? Java Basics - Anfänger-Themen 2
J Datensätze aus einer DB als Objekte erzeugen und in ArrayList abspeichern Java Basics - Anfänger-Themen 9
M Objekte aus einer Arraylist löschen Java Basics - Anfänger-Themen 7
T Objekte einer Klasse einer anderen Klasse übergeben Java Basics - Anfänger-Themen 5
A [gelöst]Objekte in einer Schleife erzeugen Java Basics - Anfänger-Themen 9
L Objekte in einer ArrayList vergleichen Java Basics - Anfänger-Themen 19
K Objekte innerhalb einer Klasse Java Basics - Anfänger-Themen 2
G auf Objekte in einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 4
N Verständnisproblem: Mehrere Objekte einer Klasse erstellen Java Basics - Anfänger-Themen 2
K Vergleich zweier Objekte in einer HashMap Java Basics - Anfänger-Themen 6
E Zugriff auf Objekte in einer ArrayList Java Basics - Anfänger-Themen 3
P Zugriff auf Objekte einer anderen Klasse Java Basics - Anfänger-Themen 1
J Objekte in einer for schleife referenzieren Java Basics - Anfänger-Themen 7
A auf objekte in einer bereits bestehenden klasse zugreifen Java Basics - Anfänger-Themen 2
B objekte einer klasse. Java Basics - Anfänger-Themen 14
C Mehrere Objekte in einer Liste einfügen und serialisieren Java Basics - Anfänger-Themen 1
L 2 Objekte einer Klasse Java Basics - Anfänger-Themen 8
J Objekte einer ArrayList in eine Tabelle einfügen Java Basics - Anfänger-Themen 2
B Wie kann ich in einer Schleife Objekte erzeugen? Java Basics - Anfänger-Themen 5
G Objekte in einer Schleife erzeugen Java Basics - Anfänger-Themen 2
C Objekte einer Klasse wiederfinden Java Basics - Anfänger-Themen 4
I Zapier -> wie werden Objekte gespeichert? Java Basics - Anfänger-Themen 10
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
K Hab ich dass so richtig erklärt (Objekte und Referenzen)? Java Basics - Anfänger-Themen 5
J Objekte in JSON speichern?? Java Basics - Anfänger-Themen 1
I Objekte in ShareProject speichern um später zu nutzen Java Basics - Anfänger-Themen 4
J Objekte Java Basics - Anfänger-Themen 22
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
Hzrfa Objekte, Referenz Java Basics - Anfänger-Themen 5
T 3D Objekte verarbeiten Java Basics - Anfänger-Themen 2
N Welche Objekte kann man zu einem Set hinzufügen Java Basics - Anfänger-Themen 4
I XML einlesen und Objekte bekommen Java Basics - Anfänger-Themen 2
Encera Zugriff auf Map-Objekte Java Basics - Anfänger-Themen 3
E Objekte löschen Java Basics - Anfänger-Themen 9
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
B Objekte verschwinden beim Übersetzen Java Basics - Anfänger-Themen 5
D Zwei verschiedene Intellij Projekte, wie benutze ich wechselseitig objekte Java Basics - Anfänger-Themen 8
E Rekursiv Objekte erzeugen - geht das? Java Basics - Anfänger-Themen 2
T Collections Sind Subklassen-Objekte in Listen mit Generics erlaubt? Java Basics - Anfänger-Themen 16
F Aus eingelesener Datei korrekt Objekte erzeugen Java Basics - Anfänger-Themen 5
G Übergeordnete Objekte abrufen Java Basics - Anfänger-Themen 9
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
A Objekte mit Parametern in eine Liste packen Java Basics - Anfänger-Themen 19
B Objekte, bspw. konkret Arraylists,manuell aus Speicher löschen? Java Basics - Anfänger-Themen 70
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
D Wie Objekte im JFrame frei bewegen lassen? Java Basics - Anfänger-Themen 3
Spandeli8 Erzeugte Objekte gegenüber Bildern hervorheben in Java Processing Java Basics - Anfänger-Themen 1
J Zwei Objekte vergleichen Java Basics - Anfänger-Themen 8
L Werte von Objekte addieren Java Basics - Anfänger-Themen 14
U Objekte in LinkedList löschen und editieren Java Basics - Anfänger-Themen 14
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
G Methoden Informationen aus zwei Objekte bekommen? Java Basics - Anfänger-Themen 6
P Globale Objekte Java Basics - Anfänger-Themen 2
C Nachträglich neue grafische Objekte hinzufügen Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben