TreeMap immer sortiert halten

Status
Nicht offen für weitere Antworten.
Q

quodlibet

Mitglied
Hallo zusammen,
ich muss zugeben ich kenne mich mit Collections und was so dazu gehört noch nicht richtig aus. Ich habe die Aufgabe eine Menge von Produkten zu verarbeiten. Die Produkte haben dabei das Attribut String name, nach dem sie auch sortiert werden sollen.
Wir sollen dazu eine TreeMap verwenden. Und ich habe das so gemacht:
Code:
private TreeMap<Integer, Produkte> produkte = new TreeMap<Integer, Produkte>();

Das funktioniert auch bis zu einem gewissen Punkt ganz gut. Aber wenn es um das sortieren geht nicht mehr.

Ich habe jetzt schon die compareTo-Methode fuer meine Klasse neu implementiert. Und jetzt weiß ich nicht weiter.
Ich habe schon das hier TreeMap(Comparator<? super K> c) gefunden, aber weiß nicht so wirklich was ich damit anfangen soll. Was darf ich mir denn unter einen Comparator vorstellen und wie setze ich diesen konkret um.


Bin dankbar für jede Hilfe,
quodlibet
 
E

EOB

Top Contributor
hilft dir das irgendwie weiter?

Code:
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;

public class DiameterMap {
  public static void main(String args[]) {
    String names[] = { "Mercury", "Venus", "Earth", "Mars", "Jupiter",
        "Saturn", "Uranus", "Neptune", "Pluto" };
    float diameters[] = { 4800f, 12103.6f, 12756.3f, 6794f, 142984f,
        120536f, 51118f, 49532f, 2274f };
    Map map = new TreeMap();
    for (int i = 0, n = names.length; i < n; i++) {
      map.put(names[i], new Float(diameters[i]));
    }
    Iterator it = map.keySet().iterator();
    Object obj;
    while (it.hasNext()) {
      obj = it.next();
      System.out.println(obj + ": " + map.get(obj));
    }
  }
}

gruesse
 
Y

yourmaninamsterdam

Mitglied
TreeMap sortiert anhand der compareTo Methode aus dem Interface Comparable.

Wenn du deine Elemente also richtig sortiert haben willst, dann musst du das Interface Comparable implementieren...

Code:
class SortedElement implements Comparable {
	private String name;
	
	public SortedElement(String name) {
		this.name = name;
	}
	
	public int compareTo(Object o) {
		SortedElement se = (SortedElement)o;
		return this.getName().compareTo(se.getName());
	}
	
	public String getName() {
		return this.name;
	}
}

Da die compareTo Methode eines Strings alphabetisch sortiert, deligierst du die Sortierung deiner Produkte einfach an die compareTo Methode ihrer Name-Strings.
 
Q

quodlibet

Mitglied
Hallo yourmaninamsterdam,
dieses Implementieren hab ich gemacht. Jedoch ist ja mein Problem, dass ich nicht weiß wie ich das dann zum Sortieren umsetzen soll.

Hallo Mørketid,
etwas hilft mir das schon etwas. Aber das heißt auf jeden Fall, dass ich die TreeMap nicht TreeMap<K, V>(); einfuehren sondern TreeMap();
Und ich versteh nicht recht was dieser Iterator da macht (woher weiß, der zum Beispiel, dass er nach dem Namen sortieren soll).

mfg
quodlibet
 
S

SamHotte

Top Contributor
yourmaninamsterdam hat gesagt.:
Wenn du deine Elemente also richtig sortiert haben willst, dann musst du das Interface Comparable implementieren...

Nicht ganz richtig. Du kannst auch separat einen Comparator schreiben und den deiner TreeMap übergeben. Vorteil: es lässt sich nachträglich nach beliebigen Feldern sortieren.
 
Q

quodlibet

Mitglied
Das klingt sehr gut.
Wo find ich denn ein Beispiel für so einen Comparator.

Und wie muss ich dann eigentlich meine TreeMap einfuehren.

Danke schon mal bis daher.
 
Y

yourmaninamsterdam

Mitglied
SamHotte hat gesagt.:
Nicht ganz richtig. Du kannst auch separat einen Comparator schreiben und den deiner TreeMap übergeben. Vorteil: es lässt sich nachträglich nach beliebigen Feldern sortieren.
Ja, richtig, mein Fehler. "Eine der Möglichkeiten" oder sowas hätte es eher heißen müssen.

Aber nochmal zum compareTo: Die Collection sortiert dann eigentlich automatisch ein (Oder entsprechend mit dem Comparator). Dachte ich jedenfalls immer.

Die Java API sagt
This class guarantees that the map will be in ascending key order, sorted according to the natural order for the key's class ...
 
S

SamHotte

Top Contributor
Stimmt schon, das mit der natürlichen Ordnung. Mit der Comparator-Methode kann man halt nach unterschiedlichen Sachen dort sortieren, wo man es benötigt, wie bspw. in Tabellen nach dem jeweils selektierten Spaltenkopf.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Map (TreeMap in TreeMap) Java Basics - Anfänger-Themen 1
N TreeMap alphabetisch sortieren? Java Basics - Anfänger-Themen 3
O Erste Schritte TreeMap nach Value sortieren Java Basics - Anfänger-Themen 2
H Collections Was ist schneller - HashMap + Sort v TreeMap? Java Basics - Anfänger-Themen 75
D TreeMap: Höheren Key ermitteln und den Value liefern Java Basics - Anfänger-Themen 3
C TreeMap Abfragen Problem Java Basics - Anfänger-Themen 7
F HashMap vs. TreeMap Java Basics - Anfänger-Themen 5
I TreeMap Java Basics - Anfänger-Themen 4
H TreeMap/HashMap synchronisieren Java Basics - Anfänger-Themen 2
M TreeMap Java Basics - Anfänger-Themen 4
H TreeMap<> statt TreeMap<Long, String> Java Basics - Anfänger-Themen 2
algebraiker TreeMap<Date,Object> navigieren? Java Basics - Anfänger-Themen 24
W Treemap remove Java Basics - Anfänger-Themen 5
N Frage zu TreeMap Java Basics - Anfänger-Themen 3
B OOP Jtree aus TreeMap<String, String[]> erstellen? Java Basics - Anfänger-Themen 6
H Datentypen TreeMap<Double, Object> - negative Werte? Java Basics - Anfänger-Themen 4
H TreeMap.remove(value) - und nicht mit key! Geht das? Java Basics - Anfänger-Themen 18
H TreeMap Rückgabe - Compiler-Warnings Java Basics - Anfänger-Themen 9
S Studentenverwaltung mit TreeMap Java Basics - Anfänger-Themen 8
F Treemap und Sortierung? Java Basics - Anfänger-Themen 2
G TreeMap Java Basics - Anfänger-Themen 6
T TreeMap lässt sich nicht sortieren Java Basics - Anfänger-Themen 8
P wie clont sich eine TreeMap? Java Basics - Anfänger-Themen 8
G TreeMap Probleme. Java Basics - Anfänger-Themen 10
G TreeMap vom 1. bis letzte eintrag durchgehen Java Basics - Anfänger-Themen 17
F TreeMap speichern und lesen Java Basics - Anfänger-Themen 3
H Treemap mit zusammengesetzten Key erstellen Java Basics - Anfänger-Themen 13
G TreeMap sortieren über ArrayList als Value Java Basics - Anfänger-Themen 9
O TreeMap nach Object[] casten? Java Basics - Anfänger-Themen 3
D Codeblöcke, die immer wieder im Programmverlauf benötigt werden Java Basics - Anfänger-Themen 4
chocobear26 Interface JOptionPane - Dialog_Fenster zeigt immer vorherige Eingabe an. Java Basics - Anfänger-Themen 4
C Objekt1.equals(Objekt2) = immer false. Wieso? Java Basics - Anfänger-Themen 22
I Array übernimmt immer den letzten Input. Java Basics - Anfänger-Themen 14
tom.j85 Doppelte Foreach Schleife: Am Ende wird immer das Gleiche Objekt eingefügt Java Basics - Anfänger-Themen 4
M Untersuchen ob ein Graph nach entfernen einer Kante immer noch zusammenhängend ist Java Basics - Anfänger-Themen 70
J Zweck von Interfaces immer noch nicht klar Java Basics - Anfänger-Themen 3
M Array immer wieder um ein Element erweitern Java Basics - Anfänger-Themen 6
UnknownInnocent Methoden Event bei gedrückter Maustaste immer wieder ausführen Java Basics - Anfänger-Themen 1
UnknownInnocent Klassen Event bei gedrückter Maus immer wieder mit Pause ausführen Java Basics - Anfänger-Themen 2
IMain23 2d Array variabler Spaltenwert, Spaltenwert immer um eins erhöhen Java Basics - Anfänger-Themen 3
M JTextField blitzt immer wieder nur auf Java Basics - Anfänger-Themen 12
N Arbeitsspeicher nach kompilieren immer voller Java Basics - Anfänger-Themen 6
S Immer das selbe mit den Schleifen Java Basics - Anfänger-Themen 24
H OOP eine Zahl immer weiter durch 2 teilen Java Basics - Anfänger-Themen 15
B Operatoren Java berechnet immer 0? Java Basics - Anfänger-Themen 3
J Timer bauen, Main Methode immer wieder neu starten Java Basics - Anfänger-Themen 13
N Funktion funktioniert nicht immer Java Basics - Anfänger-Themen 6
I Methoden Schleife immer wieder durchlaufen lassen Java Basics - Anfänger-Themen 15
3 JFrame immer im Hintergrund Java Basics - Anfänger-Themen 1
F Immer wieder gleiche Zufallszahl? Java Basics - Anfänger-Themen 4
J Operatoren Random wird nur einmal erstellt und dann immer verwendet Java Basics - Anfänger-Themen 2
S Repaint() in der Schleife funktioniert nicht immer Java Basics - Anfänger-Themen 5
S Variable in JTextField soll immer um 5 zunehmen Java Basics - Anfänger-Themen 8
schoenosrockos JButton füllt immer das ganze frame Java Basics - Anfänger-Themen 1
N JList + DefaultListModel + JScrollPane --> ensureIndexIsVisible funktioniert nicht immer Java Basics - Anfänger-Themen 1
N Immer Aktiv sein. Java Basics - Anfänger-Themen 8
D Array wird immer mir 100 für jeden Wert initialisiert? Java Basics - Anfänger-Themen 2
J Ergebnis immer 0 Java Basics - Anfänger-Themen 8
S If-Anweisunng ist IMMER true Java Basics - Anfänger-Themen 2
F Inhalt einer Variable auswerten, die sich immer wieder ändert Java Basics - Anfänger-Themen 1
S UserPref und Java Application klappt immer nicht. Java Basics - Anfänger-Themen 2
Ponychan95 Erste Schritte Switch fällt immer bis zum default durch Java Basics - Anfänger-Themen 4
F String immer weiter nach Bedarf vergrößern Java Basics - Anfänger-Themen 3
X Muss man das immer so schreiben o.O Java Basics - Anfänger-Themen 3
F Timer beendet nicht immer Java Basics - Anfänger-Themen 2
N Boolean Werte - immer "false" Java Basics - Anfänger-Themen 5
P JavaFX Textfelder geben immer null zurück Java Basics - Anfänger-Themen 8
M zufälliges Setzen von Schiffen in while klappt nicht immer Java Basics - Anfänger-Themen 3
S Random IDs immer 10-stellig? Wie? Java Basics - Anfänger-Themen 5
B Klassen Objekte werden immer überschrieben Java Basics - Anfänger-Themen 10
T Muss ein Parametertest immer eine eigene Testklasse sein? Java Basics - Anfänger-Themen 3
C JavaMail funktioniert nicht immer Java Basics - Anfänger-Themen 8
J .txt Datei "einlesen "und in String speichern ergibt immer NULL Java Basics - Anfänger-Themen 17
M Noch immer Probleme mit exec Java Basics - Anfänger-Themen 15
A Java Arrays immer um eins "vergrößern" Java Basics - Anfänger-Themen 4
E Input/Output Drucken am Mac immer gleiche Schriftgröße?!? Java Basics - Anfänger-Themen 2
R Hashset.add(Array) liefert immer true? Java Basics - Anfänger-Themen 23
I immer die gleiche Zufallszahl Java Basics - Anfänger-Themen 9
F Funktion immer zur vollen Stunde? Java Basics - Anfänger-Themen 3
A Warum immer das "J" im Klassennamen? Java Basics - Anfänger-Themen 10
M Erste Schritte Eclipse führt immer das gleiche Programm aus Java Basics - Anfänger-Themen 6
B Schlüsselworte this - immer oder nur wenn wirklich notwendig? Java Basics - Anfänger-Themen 9
A Wieso wird immer 0 ausgegeben? Java Basics - Anfänger-Themen 4
C 2 Objekte, 1 immer Null? Java Basics - Anfänger-Themen 8
P Classpath falscher Classpath, aber nicht immer Java Basics - Anfänger-Themen 19
E JButtons auf JFrame nicht immer sichtbar Java Basics - Anfänger-Themen 4
Helgon Observer Pattern - hasChanged() immer false Java Basics - Anfänger-Themen 10
P toString-Methode gibt immer null vor Variable aus Java Basics - Anfänger-Themen 9
L Immer diese Arrays Java Basics - Anfänger-Themen 11
M OOP Graphics immer selbstbezihend Java Basics - Anfänger-Themen 12
D . ist nicht immer .!? Java Basics - Anfänger-Themen 18
S Dezimale Konstanten sind immer positiv oder null - was heisst das den genau? Java Basics - Anfänger-Themen 2
L JTextField getText() gibt immer null zurück Java Basics - Anfänger-Themen 10
J \n funktioniert nicht immer Java Basics - Anfänger-Themen 10
L Woerterbuch liefert immer "null" Java Basics - Anfänger-Themen 41
J Datentypen Math.sqrt() immer NaN Java Basics - Anfänger-Themen 8
T Datei so speichern das sie immer erreichbar ist Java Basics - Anfänger-Themen 2
Os-Programming Checkbox immer wieder überprüfen Java Basics - Anfänger-Themen 13
jmar83 final wenn immer möglich verwenden? Java Basics - Anfänger-Themen 30
E Input/Output Datei immer weiter erweitern Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Anzeige

Neue Themen


Oben